我有一堆要解析的 CSV 文件 - 问题是一半的引号用作引号,主字段内有逗号。它们不是真正的 CSV,但它们确实有固定数量的可识别字段。 dialect=csv."excel"设置在字段内没有额外的 "和 , 字符的文件上完美运行。
此数据是旧的/不受支持的。我正在努力为它注入(inject)一些活力。
例如
"AAAAA
AAAA
AAAA
AAAA","AAAAAAAA
AAAAAA
AAAAA "AAAAAA" AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAA, AAAAA
AAAAAAAAA AAAAA AAAAAAAAAA
AAAAA, "AAAAA", AAAAAAAAA
AAAAAAAA AAAAAAAA
AAAAAAA
"
这会触发文件解析器,并抛出错误 _csv.Error: newline inside string
。我通过从第二个字段中删除引号将其缩小到这个问题,并且 csv.reader 模块解析文件 OK。
有些字段是多行的——我不确定知道这些是否重要。
我一直在研究方言设置,虽然我可以找到“skipinitialspace”,但这似乎并不能解决问题。
要清楚 - 这不是有效的“CSV”,它的数据对象松散地遵循 CSV 结构,但在字段测试中有 , 和 "字符。
行终止符是\x0d\x0a
我在 dialect 模块中对双引号和引号变量的不同排列进行了多次尝试,但无法正确解析。
我不能确信 ,, 或 ", 组合仅存在于字段边界上。
这个问题只存在于文件中的几个字段中的一个(最后一个),并且有几千个文件。
最佳答案
你试过通过csv.QUOTE_NONE
吗?通过 quoting
关键字参数?如果没有一些代码或数据来对此进行测试,我无法知道这是否真的适用于您的数据,但它似乎适用于您提供的片段。
>>> import csv
>>> r = csv.reader(open('foo.csv', 'rb'), quoting=csv.QUOTE_NONE)
>>> for row in r: print row
...
['"A"', '"B"', '"ccc "ccccccc" cccccc"']
关于python - 字段内包含引号和逗号字符的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9236044/