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

2024-04-25 09:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有我认为应该是一个很容易的任务,我似乎无法解决。

如何将Python字典写入csv文件?我只想把字典键写到文件的第一行,把键值写到第二行。

我最近来的是(我从别人那里得到的):

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

问题是,上面的代码似乎只把键写到了第一行,就这样。我不会把值写到第二行。

有什么想法吗?


Tags: 文件csv代码close字典myopenkeys
3条回答

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

如果需要csv文件的头,还需要使用DictWriter.writeheader()

您可能还想签出the ^{} statement中的opening files。它不仅更加python和可读性,而且可以处理关闭,即使出现异常。

做出这些更改的示例:

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())

Pro提示:在开发这样的代码时,请将writer设置为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.

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

相关问题 更多 >

    热门问题