2013-07-07 110 views
0

我正在嘗試將字典invIndex寫入文本文件。我發現下面的帖子:將字典寫入文件時出錯

我寫這幾行:

import csv 
f = open('result.csv','wb') 
w = csv.DictWriter(f,invIndex) 
w.writerow(invIndex) 
f.close() 

當我到達這條線:w.writerow(invIndex),我得到這個錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python33\lib\csv.py", line 153, in writerow 
    return self.writer.writerow(self._dict_to_list(rowdict)) 
TypeError: 'str' does not support the buffer interface 

我怎麼能寫一本字典來一個正確的文本文件。

+1

我明白你有一本字典。我想知道字典中的*是什麼。事實證明,這是一個有爭議的問題。 –

+1

您需要在寫作後期望在文件中找到更清晰的內容。包括示例輸入和輸出將有所幫助。 –

回答

2

在Python 3中,csv編寫者和讀者期望一個文本流,但open(.., 'wb')(或更確切地說,b創建一個字節流)。嘗試:

import csv 
invIndex = [ 
    {'fruit': 'apple', 'count': '10'}, 
    {'fruit': 'banana', 'count': '42'}] 
with open('result.csv', 'w', encoding='utf-8') as f: 
    w = csv.DictWriter(f, invIndex[0].keys()) 
    w.writeheader() 
    w.writerows(invIndex) 

替換utf-8與您要使用的encoding。它會寫如

fruit,count 
apple,10 
banana,42 
+0

這隻寫字典值,而我也需要鍵。 – user2192774

+0

@ user2192774那麼,這是另一個無關的問題。更新瞭解決方案。這個問題並沒有解釋'invIndex'中的究竟是什麼,所以我添加了一個示例值。 – phihag

+0

我的字典是這樣的:'{'first':{0,1,2},'second':{2,3}等。}'。當我在我的數據中嘗試腳本時,出現錯誤:'Traceback(最近一次調用最後一個): 文件「」,第2行,在 KeyError:0' – user2192774