我想使用标题将特定的python字典写入csv。我看过其他问题,但没有一个与我的字典结构类似:
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
w = csv.DictWriter(f, header)
w.writeheader()
w.writerow(myDic)
我得到的只是CSV文件中的word,count
。我正在使用python 3。
答案 0 :(得分:3)
您不能以这种方式使用DictWriter
,它是为key=column_header
和value=[row_values]
设计的。
您可以改为迭代字典并使用csv.writerow
import csv
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
w.writerow(header)
for k, v in myDic.items():
w.writerow([k, v])
或如juanpa.arrivillaga指出的那样,您可以直接在writerows
上.items()
。
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
w.writerow(header)
w.writerows(myDic.items())
但是,以这种方式将您的csv信息存储在字典中非常有局限性,因为它只能是两列,因此在继续此操作之前,请确保这是可接受的选择。
答案 1 :(得分:2)
您正在尝试将整个词典写成一行。相反,请分别写出每一行。
请在此处查看更多详细信息:
https://docs.python.org/3/library/csv.html#csv.DictWriter
作为示例,请参见以下用法:
import csv
myDic = { "a" : 1, "b" : 2, "c" : 15}
with open('myFile.csv', 'w', newline='') as csvfile:
fieldnames = ['word', 'count']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for key in myDic:
writer.writerow({'word': key, 'count': myDic[key]})
让我知道是否有帮助。我没有测试代码...但是可能在您看到答案之前。
修改 是的,经过测试,似乎工作正常。祝你好运!
答案 2 :(得分:2)
这应该有效
import csv
myDic = { "a" : 1, "b" : 2, "c" : 15}
header = ["word", "count"]
with open('myFile.csv', 'w', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(header) # write the header
for k,v in myDic.items():
writer.writerow([k,v])