我有一個 .csv 檔案,如下例所示:
27/04/22;8888888;LBB blablalbla;5 000;5 000;0;0;53707;1;WWW;
27/04/22;8888888;"LBB blablalbla;15 000;15 000;0;0;53707;1;WWW;
27/04/22;8888888;LBB blablalbla;10 000;10 000;0;0;53707;1;WWW;
我無法使用csv python 模塊正確讀取它,因為在第二行有一個雙引號但沒有引號結尾。結果是 csv 檔案的其余部分存盤在相同的 dict 值中。
我正在使用csv.DictReader函式,但我沒有找到任何不考慮這個雙引號的選項。
在使用此功能之前,我是否需要重寫 .csv 檔案?
uj5u.com熱心網友回復:
在使用此功能之前,我是否需要重寫 .csv 檔案?
不,可以csv.QUOTE_NONE如下使用,讓file.csv內容為
27/04/22;8888888;LBB blablalbla;5 000;5 000;0;0;53707;1;WWW;
27/04/22;8888888;"LBB blablalbla;15 000;15 000;0;0;53707;1;WWW;
27/04/22;8888888;LBB blablalbla;10 000;10 000;0;0;53707;1;WWW;
然后
import csv
with open('file.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile,fieldnames=["A","B","C","D","E","F","G","H","I","J","K"],delimiter=";",quoting=csv.QUOTE_NONE)
for row in reader:
print(row)
給出輸出
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', 'LBB blablalbla'), ('D', '5 000'), ('E', '5 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', '"LBB blablalbla'), ('D', '15 000'), ('E', '15 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
OrderedDict([('A', '27/04/22'), ('B', '8888888'), ('C', 'LBB blablalbla'), ('D', '10 000'), ('E', '10 000'), ('F', '0'), ('G', '0'), ('H', '53707'), ('I', '1'), ('J', 'WWW'), ('K', '')])
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/466585.html
