Python3从列表(每行上都有dict)到csv
我有一个列表,每行都有一个字典类型,因此基本上我可以在循环中遍历该列表以获得每个字典记录。我需要从列表中创建一个csv文件,每个记录都是列表中的每个条目字典 我的清单如下: [{“字段1”:“字段”,“字段2”:“字段”…},{“字段1”:“字段”,“字段2”:“字段”…}] 我已经完成了下面的代码片段,但只存储了标题:Python3从列表(每行上都有dict)到csv,python,json,python-3.x,dictionary,Python,Json,Python 3.x,Dictionary,我有一个列表,每行都有一个字典类型,因此基本上我可以在循环中遍历该列表以获得每个字典记录。我需要从列表中创建一个csv文件,每个记录都是列表中的每个条目字典 我的清单如下: [{“字段1”:“字段”,“字段2”:“字段”…},{“字段1”:“字段”,“字段2”:“字段”…}] 我已经完成了下面的代码片段,但只存储了标题: with open('myfile', mode='wt', encoding='utf-8') as myfile: for lines in data:
with open('myfile', mode='wt', encoding='utf-8') as myfile:
for lines in data:
myfile.write('\n'.join(lines))
myfile.write('\n')
我一直在探索,但我不知道如何在一个循环中将它组合到列表的每一行,以保证每一条记录都来自行列表
谢谢你的帮助
谢谢。这几乎是另一个问题的重复,但是注释系统不适合这么大的代码片段。只需使用for循环迭代您的dict列表,其中另一个问题的答案仅保留一行:
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)
实际上,您可以使用pandas很好地解决这个问题:
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
您可以使用DictWriter.writerows
在数据的列表上迭代
您可以在DictWriter
的工作原理中看到
下面是writerows
的规范:
csvwriter.writerows(行)“”
将所有元素写入行(如所述的行对象列表
上面)到编写器的文件对象,按照当前方言格式化
您能否更具体地说明数据是什么?如果这是一个字典,也许您应该在join()
中使用line.values()
而不是line
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)