【问题标题】:How to write a list containing key and another list as value into CSV file per column in Python如何将包含键和另一个列表的列表作为值写入 Python 中的每列的 CSV 文件
【发布时间】:2022-01-07 03:24:24
【问题描述】:

有人可以帮帮我吗?

我有一个清单:

list = [('ac', [1, 1]), ('alex.miller', [1, 2]), ('blossom', [2, 3])]

我想将其写入 CSV 文件,如下所示:

ac,1,1

alex.miller,1,2

开花,2,3

到目前为止,我尝试过(也尝试拆分整数列表,将其转换为字符串并将其与 row[0] 连接回来但没有成功,输出就像 a,c,1,1 a,l,e ,x,.,m 等):

with open(r"user_statistics.csv", "a+") as csvfile_user:
  writer = csv.writer(csvfile_user)
  for row in list:
    writer.writerow(row)

但是输出是:

ac,"[1, 1]"

alex.miller,"[1, 2]"

开花,“[2, 3]”

我怎样才能做到这一点?

【问题讨论】:

    标签: python list csv


    【解决方案1】:

    你需要用值解压列表

    writer.writerow((row[0], *row[1]))
    

    输出:

    ac,1,1
    
    alex.miller,1,2
    
    blossom,2,3
    

    附带说明,不要使用内置的list 作为变量名。

    【讨论】:

    • 非常感谢:) 我在实际代码中没有使用列表变量名,我只是放在那里,但感谢指出。
    【解决方案2】:

    如果使用 pandas 是可以接受的,那么试试这个:

    import pandas as pd
    ls = [('ac', [1, 1]), ('alex.miller', [1, 2]), ('blossom', [2, 3])]
    
    df = pd.DataFrame(ls, columns=['A', 'B'])
    
    # split the list into new columns
    df[['C','D']] = pd.DataFrame(df['B'].tolist(), index= df.index)
    
    # drop that original list columns
    df.drop('B', axis=1, inplace=True)
    # finally convert to csv file
    df.to_csv('mycsv.csv', index=False)
    

    【讨论】:

    • 谢谢,我对 pandas 不熟悉,但我一定会检查它,因为它看起来很有趣
    【解决方案3】:

    例如,在输入writerow 之前,您需要将所拥有的内容转换为平面元组列表或平面列表

    my_list = [('ac', [1, 1]), ('alex.miller', [1, 2]), ('blossom', [2, 3])] 
    my_list = [(i[0],*i[1]) for i in my_list]
    print(my_list)
    

    输出

    [('ac', 1, 1), ('alex.miller', 1, 2), ('blossom', 2, 3)]
    

    说明:我使用list 理解和参数解包将带有 str 和 list 的元组转换为平面元组

    附带说明:不要使用 list 作为变量名,因为它会掩盖内置的 list

    【讨论】:

    • 非常感谢:) 我在实际代码中没有使用列表变量名,我只是放在那里,但感谢指出。
    猜你喜欢
    • 2021-05-27
    • 2021-05-03
    • 1970-01-01
    • 2014-06-27
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多