【发布时间】:2017-12-04 00:33:58
【问题描述】:
下面是获取字典列表并将它们写入 CSV 文件的代码。
import csv
def createBaselineCSV(baselineDictionaryList, name):
toCSV = baselineDictionaryList
keys = toCSV[0].keys()
print(keys)
with open(name, 'w') as output_file:
dict_writer = csv.DictWriter(output_file, fieldnames=keys)
dict_writer.writeheader()
dict_writer.writerows(toCSV)
contacts = [{'Name':'John Smith', 'Email':'example@email.com', 'Phone':'888-888-8888'}, {'Name':'Keith Stone', 'Email':'keith@coors.com', 'Phone':'000-000-000'}]
createBaselineCSV(contacts, 'contacts.csv')
但是,每次创建新的电子表格时,创建的 CSV 文件的列格式并不保持一致。所以有一次它可能会创建一个如下所示的 CSV:
Name, Email, Phone
John Smith, example@email.com, 888-888-8888
Keith Stone, keith@coors.com, 000-000-0000
下次它可能会生成如下所示的 CSV:
Email, Phone, Name
example@email.com, 888-888-8888, John Smith
keith@coors.com, 000-000-0000, Keith Stone
有没有一种好方法可以确保每次创建 CSV 时列单元格都位于固定位置?例如,A 列始终为“姓名”,B 列始终为“电子邮件”,C 列始终为“电话”。
我猜想完成这将意味着在字典列表以外的不同数据类型上调用 createBaselineCSV(因为字典不保持指定的顺序),而不是在函数中重新格式化代码。最好的方法是什么?
【问题讨论】:
-
不要使用 DictWriter,或者如果必须使用 collections.OrderedDict。字典本质上不是有序的:这很重要。
标签: python csv export-to-csv