为了账号安全,请及时绑定邮箱和手机立即绑定

如何将Python字典写入csv文件?

如何将Python字典写入csv文件?

慕斯709654 2019-08-26 17:19:59
如何将Python字典写入csv文件?我认为这应该是一项我似乎无法解决的非常简单的任务。如何将Python字典写入csv文件?我想要的只是将字典键写入文件的顶行,将键值写入第二行。我最接近的是以下(我从其他人的帖子中得到):f = open('mycsvfile.csv','wb')w = csv.DictWriter(f,my_dict.keys())w.writerows(my_dict)f.close()问题是,上面的代码似乎只是将键写到第一行,就是这样。我没有把值写到第二行。有任何想法吗?
查看完整描述

3 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

你正在使用DictWriter.writerows()哪个需要一个dicts列表,而不是一个dict。你DictWriter.writerow()想写一行。

DictWriter.writeheader()如果你想要一个csv文件的标题,你也会想要使用。

您还可能要检查出with声明打开文件。它不仅具有更多的pythonic和可读性,而且可以处理关闭,即使发生异常时也是如此。

进行这些更改的示例:

import csv

my_dict = {"test": 1, "testing": 2}with open('mycsvfile.csv', 'wb') as f:  # Just use 'w' mode in 3.x
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)

哪个产生:

test,testing1,2


查看完整回答
反对 回复 2019-08-26
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你的代码非常接近工作。

尝试使用常规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)


查看完整回答
反对 回复 2019-08-26
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

为什么使用csv来完成这个简单的任务?

keys,values=zip(*my_dict.items())print >>f, ", ".join(keys)print >>f, ", ".join(values)f.close()

我用两种方式使用python:

1. As a proper language where I want all software engineering principles to hold in my code.2. As a scripting language, where I want to just get something done and the code I write for this is not meant for reuse.

我的回答只对第二个目的有用。并且还要考虑记住所有这些模块及其各自功能的痛苦:P


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 3007 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信