如何将一个Python字典写入一个csv文件?
我有我认为应该是一个非常容易的任务,我似乎无法解决。
如何将一个Python字典写入一个csv文件? 我想要的只是将字典键写入文件的第一行,将键值写入第二行。
我最近来的是以下(我从别人的post中得到):
f = open('mycsvfile.csv','wb') w = csv.DictWriter(f,my_dict.keys()) w.writerows(my_dict) f.close()
问题是,上面的代码似乎只写了第一行的关键,就是这样。 我没有得到写入第二行的值。
有任何想法吗?
您正在使用DictWriter.writerows()
期望列表的字典,而不是一个字典。 你想要DictWriter.writerow()
写一行。
如果你想为你的csv文件创build一个头文件,你也可以使用DictWriter.writeheader()
。
你也可能想看看打开文件的 语句 。 这不仅更加pythonic和可读性,但处理闭幕,即使发生exception。
这些更改的示例:
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,testing 1,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)
。
为什么使用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.
我的答案只对第二个目的有用。 还要考虑到所有这些模块及其各自function的痛苦