[英]python dictionary to csv file
我正在將字典的內容寫入csv文件。 我字典的k,v對是{int:整數列表}。 當將其寫入文件=>時,我看到一個有趣的事情,當列表的大小為1時,它將打印為列表。 當列表的大小較大時,它將打印為字符串(雙引號)。 這是示例輸出(如輸出csv文件中所示):
24,[-12345]
25,[-1962956450172838896]
26,"[-125, -12323459939, -2323445, -345425]"
27,[-730881498578617677]
20,[4001623946089138114]
21,[-12345]
我使用以下代碼寫入文件:
def dictToCsv(dictionary, csvfile):
writer = csv.writer(open(csvfile, 'wb'))
for key, value in dictionary.items():
writer.writerow([key, value])
我很肯定所有值都是整數列表。
我以這種方式創建字典(為簡便起見,我縮短了代碼):
memberList = []
d = {}
with open(inputCsvFile) as f_in:
for line in f_in:
pair = line.split(',')
cid = pair[0]
member = pair[1]
value = member.strip()
memberList.append(int(value))
d[cid] = memberList
可能出什么問題了? 我試圖在所有階段打印dict值...它們只是列表。 不知道如何將它們轉換為字符串。 我只是不想在輸出的csvfile中使用雙引號。
任何幫助表示贊賞。
列表以列表的字符串表示形式發送到csv文件。 如果列表中有多個項目,則需要在csv文件中加引號,因此,將列表中的項目定界的逗號不會誤認為是將csv文件中的字段定界的逗號。
CSV文件中唯一的數據類型是字符串。 如果您使用csv模塊將該csv文件重新讀回到python,則會返回["25", "[-1962956450172838896]"]
作為第2行的值,以及["26", "[-125, -12323459939, -2323445, -345425]"]
用於第3行。
如果要避免在列表中加引號,則可以在創建csv文件時通過設置delimiter
參數來使用其他定界符。 制表符分隔的( \\t
)在這里可以很好地工作。
dictToCsv需要以這種方式修復
def dictToCsv(dictionary, csvfile):
writer = csv.writer(open(csvfile, 'wb'))
for key, value in dictionary.items():
# writer.writerow([key, value]) << wrong
writer.writerow([key] + value)
這將產生一個如下的csv文件:
20,4001623946089138114
21,-12345
24,-12345
25,-1962956450172838896
26,-125,-12323459939,-2323445,-345425
27,-730881498578617677
每行的第一個元素是鍵,后續元素是關聯的列表值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.