我一直在寻找几个小时,但找不到应该是一个非常简单的问题的答案。
我有一个字典...
{'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列(键,值),而不使用愚蠢的括号和单引号。有人可以给我一个示例代码吗?
答案 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
条款。 最后,你打开输出文件两次(在第三和第九行),我怀疑这可能是这个小情况下真正的罪魁祸首。