在Python中将dict写入CSV时删除单引号

时间:2014-01-16 22:57:07

标签: python csv python-3.x dictionary

我一直在寻找几个小时,但找不到应该是一个非常简单的问题的答案。

我有一个字典...

{'apples' : 'red', 'pears' : 'green', 'bananas' : 'yellow'}

当我尝试将其写入CSV时,它会保留单引号,并且它们最终会出现在我的文件中......这是我不想要的。

outputz = {}
print('\nBegin phrase token output:\n')
    with open('test.csv', 'w', newline='') as csvfile:
        spamwriter = csv.writer(csvfile, delimiter=',',
                                dialect='excel', quoting=csv.QUOTE_NONE, escapechar='/')

        spamwriter.writerow([outputz])
        spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
        writer = csv.writer(open('test.csv', 'w'))
        for key, value in outputz.items():
               writer.writerow([key, value])
    outputz = {}
else:
    outputz = {}

我不想重新编写或重写整个代码,因为您可以看到我已经在学习教程示例了。我不打算成为一名全职开发人员,我只需要为我的老板敲出一次。

如何在Python 3中将我的dict写入csv的2列(键,值),而不使用愚蠢的括号和单引号。有人可以给我一个示例代码吗?

1 个答案:

答案 0 :(得分:1)

您的代码存在很多问题,但看起来您的基本问题是您一次编写整个字典(spamwriter.writerow([outputz])),而不是逐项编写。如果您想要(key, value)列中的输出,那么您应该这样做:对于每个键值对,将该对写入csv文件。你实际上已经这样做了,你发布的代码是第十行和第十一行:

import csv
outputz = {'apples' : 'red', 'pears' : 'green', 'bananas' : 'yellow'}
with open(r'C:\test\foo.bar', 'w') as f:
    writer = csv.writer(f)
    for key, value in outputz.items(): # Iterate over the dictionary items
        writer.writerow([key, value]) # Write each pair to the csv file.

此代码在运行时会在输出文件中生成预期的键值对。


我建议你稍微清理你的代码:你有一些疯狂的缩进和一些奇怪的东西,我怀疑是你问题的真正根源。您的第三行似乎没有任何理由缩进,并且您有一个非常可疑的else条款。 最后,你打开输出文件两次(在第三和第九行),我怀疑这可能是这个小情况下真正的罪魁祸首。