我认为应该是一个非常简单的任务,但我似乎无法解决。
如何将Python字典写入CSV文件?我所要做的就是将字典键写入文件的顶部行,将键值写入第二行。
我最接近的方法是以下代码(来自他人帖子):
f = open('mycsvfile.csv','wb')
w = csv.DictWriter(f,my_dict.keys())
w.writerows(my_dict)
f.close()
问题是,上述代码似乎只将键写入第一行,仅此而已。我没有得到值被写入第二行的结果。
有什么想法吗?
我认为应该是一个非常简单的任务,但我似乎无法解决。
如何将Python字典写入CSV文件?我所要做的就是将字典键写入文件的顶部行,将键值写入第二行。
我最接近的方法是以下代码(来自他人帖子):
f = open('mycsvfile.csv','wb')
w = csv.DictWriter(f,my_dict.keys())
w.writerows(my_dict)
f.close()
问题是,上述代码似乎只将键写入第一行,仅此而已。我没有得到值被写入第二行的结果。
有什么想法吗?
您正在使用DictWriter.writerows()
方法,该方法期望一系列字典而不是一个字典。您需要使用DictWriter.writerow()
方法来写入单行。
如果您想要CSV文件的标题行,则还需要使用DictWriter.writeheader()
方法。
您可能还想查看with语句以便打开文件。它不仅更加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
import csv
somedict = dict(raymond='red', rachel='blue', matthew='green')
with open('mycsvfile.csv','w') as f:
w = csv.writer(f)
w.writerows(somedict.items())
with open('mycsvfile.csv','w') as f:
w = csv.writer(f)
w.writerow(somedict.keys())
w.writerow(somedict.values())
w = csv.writer(sys.stderr)
,这样您可以更轻松地查看生成的内容。当逻辑完善后,切换回w = csv.writer(f)
。open
调用必须像这样:open('my.csv', 'w', newline='')
。 - Cullub
csv.DictWriter(f, ["testing"], extrasaction='ignore')
轻松地打印字典的子集。 - Dawodo