2014-01-16 98 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條款。 最後,你打開輸出文件兩次(在第三行和第九行),我懷疑這可能是這種小局面的真正罪魁禍首。