Python3从列表(每行字典)到csv

时间:2018-09-25 16:16:20

标签: python json python-3.x dictionary

我有一个列表,每行都有一个字典类型,因此基本上我可以循环浏览列表以获取每个字典记录。我需要从该列表创建一个csv文件,并且每个记录都是列表中的每个项字典。

我的列表如下:

[{“ field1”:“ field”,“ field2”:“ field” ....},{“ field1”:“ field”,“ field2”:“ field” ....}]

我已经在下面完成了此代码段代码,但仅存储标题:

baseUrl

我正在探索How do I write a Python dictionary to a csv file?,但是我不知道如何在循环中将其组合到列表的每一行,以确保每条记录都来自行列表。

感谢您的帮助

谢谢。

3 个答案:

答案 0 :(得分:1)

with open('myfile', 'wb') as f:
    # assign your headers
    w = csv.DictWriter(f, fieldnames=data[0].keys())
    # write headers
    w.writeheader()
    # write data
    w.writerows(data)

您可以使用DictWriter.writerows遍历list的数据。

您可以在docs中看到DictWriter的工作方式。

这是writerows的规格:

  

csvwriter.writerows(rows)¶

     

写入行中的所有元素(如所述,可迭代的行对象   上方)到作者的文件对象,并根据当前的方言进行格式化。

答案 1 :(得分:0)

几乎是另一个问题的重复,但是注释系统不适合这么大的代码段。只需使用for循环遍历您的词典列表,其中其他问题的答案仅保留一行:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    writer = csv.DictWriter(myfile, data[0].keys())
    writer.writeheader()
    for line in data:
        writer.writerow(line)

您还可以使用writerows方法并传递整个列表:

with open('myfile', mode='wt', encoding='utf-8') as myfile:
    writer = csv.DictWriter(myfile, data[0].keys())
    writer.writeheader()
    writer.writerows(data)

答案 2 :(得分:0)

您实际上可以使用熊猫很好地解决此问题:

import pandas as pd
df = pd.DataFrame(dict_list)
df.to_csv('output.csv', index=False)

这是一个演示:

dict_list = [{'field1': 100, 'field2': '10:00', 'field3': 'cherries'}, 
{'field1': 500, 'field2': '6:00', 'field3': "cheese"}, 
{'field1':250, 'field2': '9:00', 'field3': 'beans'}]

输出

   field1 field2    field3
      100  10:00  cherries
      500   6:00    cheese
      250   9:00     beans
相关问题