带有引号和逗号字符的CSV文件

Jay*_*uso 8 python csv quote

我有一堆我要解析的CSV文件 - 问题是有一半的引号用作引号,而主要字段中有逗号.它们实际上不是CSV,但它们确实具有可识别的固定数量的字段.方言= csv."excel"设置完美地适用于文件中没有额外的"and,字段内的字符".

此数据已旧/不受支持.我想把一些生命投入其中.

例如

"AAAAA
AAAA
AAAA
AAAA","AAAAAAAA


AAAAAA
AAAAA "AAAAAA" AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA, AAAAA
AAAAAAAAA AAAAA AAAAAAAAAA
AAAAA, "AAAAA", AAAAAAAAA
AAAAAAAA AAAAAAAA
AAAAAAA
"
Run Code Online (Sandbox Code Playgroud)

这会使文件解析器跳闸,并引发错误_csv.Error: newline inside string.我通过从第二个字段中删除引号来解决这个问题,并且csv.reader模块解析文件OK.

有些领域是多行的 - 我不确定这些是否重要.

我一直在寻找方言设置,虽然我可以找到'skipinitialspace',但这似乎并没有解决问题.

要清楚 - 这不是有效的'CSV',它的数据对象松散地遵循CSV结构,但是在字段测试中有"字符".

lineterminator是\ x0d\x0a

我已尝试过双重引用的不同pernations和方言模块中的引用变量,但我无法正确解析这个问题.

我无法确信a,"或"组合仅存在于场边界上.

此问题仅存在于文件中的几个字段中的一个(最后一个),并且有几千个文件.

sen*_*rle 11

你试过csv.QUOTE_NONE通过quoting关键字arg 传递?如果没有一些代码或数据来测试它,我无法知道这是否真的对您的数据有效,但它似乎与您提供的片段一起使用.

>>> import csv
>>> r = csv.reader(open('foo.csv', 'rb'), quoting=csv.QUOTE_NONE)
>>> for row in r: print row
... 
['"A"', '"B"', '"ccc "ccccccc" cccccc"']
Run Code Online (Sandbox Code Playgroud)


小智 4

我还不能发表评论,所以我将发布作为答案......

假设您使用逗号作为分隔符,您的数据中是否有逗号?如果没有,那么您可以在 CSV 处理之前进行大量查找和替换,以将字段的第一个字符之后和最后一个字符之前的所有引号字符加倍。