我有一个列表,每行都有一个字典类型,因此基本上我可以循环浏览列表以获取每个字典记录。我需要从该列表创建一个csv文件,并且每个记录都是列表中的每个项字典。
我的列表如下:
[{“ field1”:“ field”,“ field2”:“ field” ....},{“ field1”:“ field”,“ field2”:“ field” ....}] >
我已经在下面完成了此代码段代码,但仅存储标题:
baseUrl
我正在探索How do I write a Python dictionary to a csv file?,但是我不知道如何在循环中将其组合到列表的每一行,以确保每条记录都来自行列表。
感谢您的帮助
谢谢。
答案 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