-1
我有以下代碼來遍歷我的CSV值。輸入數據(Sample.csv
):Python csv轉換
name,city
jack,nj
matt,ny
和JSON創建輸出。從代碼所需的輸出
[
{"name": "jack","city": "PA"},
{"name": "matt","city": "CA"}
]
輸出:
[{"name,city": "jack,PA"};{"name,city": "matt,CA"};]
代碼示例:
#!/usr/bin/python
import json
import csv
csvfile = open('sample.csv', 'r')
jsonfile = open('sample.csv'.replace('.csv','.json'), 'w')
jsonfile.write('{\n[\n')
fieldnames = csvfile.readline().replace('\n','').split(';')
reader = csv.DictReader(csvfile, fieldnames, delimiter=';')
from collections import OrderedDict
for row in reader:
json.dump(OrderedDict([(f, row[f]) for f in fieldnames]), jsonfile, indent=4)
jsonfile.write(';\n')
jsonfile.write(']\n}')
最終輸出是不對準成鍵值對。
僅供參考如果CSV文件的第一行*爲字段名稱,則不需要直接處理字段名。此外,還不清楚爲什麼要手動修改輸出文件中的JSON。另外,鑑於分隔符顯然是',',爲什麼你繼續使用';'?! – jonrsharpe
我是Python的新手,我嘗試了其他的例子,但是它將值附加到一個列表中,這個列表在轉換超過1 GB的文件時花費了大量的時間。相反,我想附加到json輸出文件,而不是將其保存在內存中。這是讓我更接近我需要的代碼 其他解決方案:http://stackoverflow.com/a/32158933/884808 – jb04
但是你關閉數組後每個項目後,莫名其妙地使用分號。如果您要手動編寫JSON,我建議您熟悉有效的語法。 – jonrsharpe