Python用标头将字典写到csv

时间:2019-10-23 00:29:48

标签: python python-3.x

我想使用标题将特定的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。

3 个答案:

答案 0 :(得分:3)

您不能以这种方式使用DictWriter,它是为key=column_headervalue=[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])