我有一系列格式错误的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
您是否暗示我认为正确的行只是偶尔被解析器拾取,因为引号的具体组合并且实际上它们中没有一个正在以“正确”方式解析? –