2012-06-16 122 views
0

我有一個關於Python中的csv模塊的問題。我似乎無法將一個詞典列表寫入一個csv文件。如果你能幫我發現這裏的錯誤,那將是太棒了。TypeError將字典寫入Python中的csv

我得到一個類型錯誤:序列項0:預計STR例如,字典發現

f = open("datadump.csv", 'wt') 
try: 
    fieldnames = ['type', 'name', 'contact', 'address', 'tel', 'web', 'infos'] 
    writer = csv.DictWriter(f, fieldnames=fieldnames, delimiter=';', extrasaction='raise') 
    writer.writerow(dict((fn,fn) for fn in fieldnames)) 
    for entry in listd: 
     writer.writerow(entry) 
finally: 
    f.close() 

listd是字典對象的列表,其中一個典型的是這樣的:

{'web': '', 'tel': 'Tel.: 043 377 97 32', 'name': ' Kinderkrippe Doppelchnopf', 'contact': '', 'address': 'Rütistrasse 37d, 8134 Adliswil', 'infos': '', 'type': 'kita'} 
+0

爲了以防萬一...您的示例字典中有一個電話號碼:043 377 97 32'這只是一個字符串而不是一個有效的鍵/值。那不是實際的數據嗎? – KobeJohn

+0

@ kobejohn:這是'tel'鍵的值,對吧?將值的名稱包含在值中可能很奇怪,但它不會使字典無效。確實是 – Junuxx

+0

。失去了閱讀能力。對於那個很抱歉。 – KobeJohn

回答

0

您的代碼基本上未修改適用於我。我想也許你對listd有一些奇怪的想法。嘗試下面的完整代碼。

import csv 

fieldnames = ['type', 'name', 'contact', 'address', 'tel', 'web', 'infos'] 
data_item = {'web': '', 'tel': 'Tel.: 043 377 97 32', 'name': ' Kinderkrippe Doppelchnopf', 'contact': '', 'address': 'Rtistrasse 37d, 8134 Adliswil', 'infos': '', 'type': 'kita'} 
listd = [data_item]*3 
f = open("datadump.csv", 'wt') 
writer = csv.DictWriter(f, fieldnames=fieldnames, delimiter=';', extrasaction='raise') 
try: 
    writer.writerow({fn:fn for fn in fieldnames}) 
    for entry in listd: 
     writer.writerow(entry) 
finally: 
    f.close()