2014-01-16 96 views
-3

我一直在寻找小时,找不到应该是一个非常简单问题的答案。在Python中将字典写入CSV时删除单引号

我有一个字典...

{'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中将我的词典写入csv的2列(键值),而不需要使用愚蠢的括号和单引号。有人可以给我一个示例代码?

+0

你的代码示例没什么意义。什么是缩进? outputz定义在哪里?为什么'else:'块在最后没有匹配'if','for',''while'或'try'语句? –

+0

为什么要打开CSV文件*两次*,首先编写整本字典,然后重新打开它(清除它)以便写出字典项目? –

回答

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条款。 最后,你打开输出文件两次(在第三行和第九行),我怀疑这可能是这种小局面的真正罪魁祸首。