python - 字段内包含引号和逗号字符的 CSV 文件

标签 python csv quote

我有一堆要解析的 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/

相关文章:

python - 使用 SimpleImputer 后 Dataframe 变成 numpy 数组。我希望它返回一个 dataframe

python - 在 Python 中连接到 MySQL : the safe way?

python - 连接其他唯一列的所有可能的列值

php - 如何使 CSV 上传执行得更快?

php - 如何在php mysql中相对于列插入csv数组数据

csv - 如何使用 h :outputLink without controller bean 下载文件

python - 无法将 Windows 纪元时间转换为正常日期时间

Jquery 将 "转换为文字引用

html - 使用 <blockquote> 进行大引号

regex - 使用 RegExp 选择 URL,但在用双引号引起来时忽略它们