我有一系列格式錯誤的csv,並且在使用python標準庫中的csv解析器解析它們時遇到了一些麻煩。從本質上講,csv不是逃避返回字符,我得到一些我不明白的輸出。python csv無法解析帶引號中的轉義字符的csv
看起來,解析器有時可以把適當的線條放在一起,但是會不規則地放下或添加。例如,在ID = 1的條目中,字符串中間的引號被刪除,但最後一個保留。類似的事情發生在最後一項(id = 3)。我希望外部報價可以像ID一樣放在條目中。
它也沒有以我能找到的可預測的方式組合線條。 id = 2的條目分成兩個條目,我無法理解爲什麼其他兩個條目完好無損,但是這個條目是分割的。
是否有一些模糊的csv的格式,我不理解,使得他們難以解析非轉義的返回字符。我嘗試了各種格式參數無濟於事。任何清晰度將不勝感激。謝謝!
編輯:爲了澄清,我明白我可以在解析csv之前進行字符串替換。我在問爲什麼產量似乎並不正規。
代碼:
import csv
with open('text.csv') as csv_file:
for line in csv.reader(csv_file):
print(line)
輸入:
"id","text"
"1","This line here
More Text "quoted"
"2","This line here "quoted" More Text
More Text "quoted" More Text"
"3","This line here
"quoted"
輸出:
['id', 'text', 'id2']
['97910', 'This line here\r\nMore Text quoted"', '1']
['97930', 'This line here quoted" More Text']
['More Text "quoted" More Text"', '2']
['97930', 'This line here\r\nquoted"', '3']
希望的輸出:
['id', 'text', 'id2']
['97910', 'This line here\r\nMore Text "quoted', '1']
['97930', 'This line here "quoted" More Text\r\nMore Text "quoted" More Text', '2']
['97930', 'This line here\r\n"quoted', '3']
對,我明白我更嚴格的csv會是什麼樣子。我更多問爲什麼一個人被分解成碎片而其他人不是。 –
@QuintonRobbins我更新了我的答案。 – McGrady
您是否暗示我認爲正確的行只是偶爾被解析器拾取,因爲引號的具體組合並且實際上它們中沒有一個正在以「正確」方式解析? –