我正在將一個字典的內容寫入一個csv文件。我的字典中的k,v對是{int:整數列表}。當它被寫入文件時,我看到一個有趣的事情=>當列表的大小是1時,它將打印爲一個列表。當列表的大小更大時,它將打印爲一個字符串(用雙引號括起來)。下面是一個例子輸出(如被看見在輸出csv文件):python字典到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
可能是什麼回事?我試圖在所有階段打印字典值......並且它們只是列表。不知道他們如何被轉換爲字符串。我只是不想在我的輸出csvfile中使用雙引號。
任何幫助表示讚賞。
它們都作爲列表的字符串表示被髮送到csv文件。當列表中有多個項目時,它需要在csv文件中引用,因此用於分隔列表中項目的逗號不會被誤認爲用於分隔csv文件中的字段的逗號。如果您使用csv模塊將該csv文件重新讀入python。您將返回行['25','[ - 1962956450172838896]「]'作爲行2的值,''」26「,」[-125,-12323459939,-2323445,-345425]「]'行3. csv文件中唯一的類型是字符串。 –
有不同口味的csv。正如史蒂文指出的,由於逗號含糊不清,需要引用含逗號的列表表示。您可以更改爲使用分號作爲項目分隔符的csv風格,或者即使不必要也使用引號來獲取單迭代和多迭代列表的類似輸出。 有關詳細信息,請參閱csv模塊的python文檔,特別是方言部分: (https://docs.python.org/3/library/csv.html#csv.Dialect) – pixelbrei
不帶引號,您的csv文件不起作用,並且不可讀... – njzk2