d = {'A':85,'B':70,'C':40}
我需要將其寫為標題為“title,score”的 .csv 檔案
我嘗試了兩種方法,但它們都不起作用。
#方法一:
f= open('score.csv','w')
f.write('Title,Score\n')
a = str(d)
for item in a.strip('{}').split(','):
item.replace(':',',')
f.write(item)
f.close()
#當我打開 score.csv 時,我不知道為什么它什么也沒顯示。
#方法二:
f= open('score.csv','w')
f.write('Title,Score\n')
with open('score.csv','w') as f:
for title in d.keys():
f.write('%s,%s\n'%(title,str(d[title]))
#方法2無法運行,我猜是因為我無法在檔案中寫入數字?但我試過str,它仍然無法運行。
uj5u.com熱心網友回復:
使用 pandas 可以單行完成任務
pip install pandas
邏輯
import pandas as pd
d = { 'A': 85, 'B':70, 'C':40}
(pd.DataFrame.from_dict(data=d, orient='index')
.to_csv('dict_con.csv', header=False))
輸出csv#

uj5u.com熱心網友回復:
您的代碼的第二次迭代“方法 2”是您想要的。它“未運行”的原因是因為這一行:
f.write('%s,%s\n'%(title,str(d[title]))
您得到的錯誤是“檔案意外結束”,并且您的程式檔案被列為檔案。如果仔細觀察,您會發現有三個開括號,但只有兩個閉括號。添加一個括號,它幾乎可以完美地作業。仍然阻礙它的是:
f= open('score.csv','w')
f.write('Title,Score\n')
您打開檔案為f,寫入它,然后 - 不關閉它 - 打開另一個檔案為f,并寫入新資料。第一個f檔案物件的緩沖區永遠不會被寫入檔案,因此您永遠不會將標題作為 CSV 檔案的一部分。
對您的代碼進行這些小的修改將起到作用:
d = { 'A': 85, 'B':70, 'C':40}
# f= open('score.csv','w') #don't need this
with open('score.csv','w') as f:
f.write('Title,Score\n') #moved from above
for title in d.keys():
f.write('%s,%s\n'%(title, d[title])) #don't need the str()
我忘記了:你str()在f.write().
uj5u.com熱心網友回復:
要撰寫 .CSV 檔案,請使用該csv模塊。確保使用記錄newline=''的引數。請參閱此答案以了解原因。
這個簡單的例子并不重要,但csv模塊也會正確地參考包含列分隔符的欄位并轉義嵌入的引號。不要重新發明輪子并嘗試手動撰寫 CSV。
import csv
d = {'A': 85, 'B': 70, 'C': 40}
with open('score.csv', 'w', newline='') as fout:
writer = csv.writer(fout)
writer.writerow(['title', 'score'])
for key, value in d.items():
writer.writerow([key, value])
# CSV module will properly quote and escape fields as needed
writer.writerow(['field,with,commas','field"with"quotes'])
分數.csv:
title,score
A,85
B,70
C,40
"field,with,commas","field""with""quotes"
電子表格:

uj5u.com熱心網友回復:
一個過于簡單但有效的解決方案:
csv_string = "\n".join(",".join(map(str, pair)) for pair in d.items())
#'A,85\nB,70\nC,40'
然后將其寫入csv_string檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518164.html
標籤:PythonCSV
上一篇:過濾具有串列作為列值的資料框
