如何将Python字典写入csv文件

我有什么,我认为应该是一个非常简单的任务,我似乎无法解决。

我有什么,我认为应该是一个非常简单的任务,我似乎无法解决。

如何将 Python 字典写入 csv 文件?我想要的是将字典键写入文件的顶行,将键值写入第二行。

我最接近的是以下(我从别人的帖子中得到的):

f = open('mycsvfile.csv','wb')
w = csv.DictWriter(f,my_dict.keys())
w.writerows(my_dict)
f.close()

问题是,上面的代码似乎只将键写入第一行,就是这样。

有什么想法吗?

246

您使用的是DictWriter.writerows(),它需要一个字典列表,而不是一个字典。您希望DictWriter.writerow()写入一行。

如果您想要 csv 文件的标题,您还需要使用DictWriter.writeheader()

您可能还想查看opening filesthe with statement。它不仅更具 pythonic 和可读性,而且可以为您处理关闭,即使发生异常。

进行这些更改的示例:

import csv
my_dict = {"test": 1, "testing": 2}
with open('mycsvfile.csv', 'w') as f:  # You will need 'wb' mode in Python 2.x
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)

产生:

test,testing
1,2
115

您的代码非常接近工作。

尝试使用常规的csv.writer而不是DictWriter。后者主要用于编写字典列表。

下面是一些代码,将每个键 / 值对写入一个单独的行:

import csv
somedict = dict(raymond='red', rachel='blue', matthew='green')
with open('mycsvfile.csv','wb') as f:
    w = csv.writer(f)
    w.writerows(somedict.items())

相反,如果你想在一行上的所有键和下一个所有的值,这也很容易:

with open('mycsvfile.csv','wb') as f:
    w = csv.writer(f)
    w.writerow(somedict.keys())
    w.writerow(somedict.values())

专业提示:在开发这样的代码时,将编写器设置为w = csv.writer(sys.stderr),这样您可以更容易地看到正在生成的内容,当逻辑完善时,切换回w = csv.writer(f)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(522)
(Excel)如果单元格大于<条件>则减去<数字>
上一篇
字符串编码器到固定大小的输出(string encoder)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(52条)