CSV文件,字段内有引号和逗号字符

2024-05-15 04:00:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一堆CSV文件要解析-问题是一半的have引号用作引号,并且在主字段中使用逗号。它们不是真正的CSV,但它们确实有固定数量的可识别字段。dialect=csv.“excel”设置在文件上工作得很好,字段中没有多余的“和”字符。

此数据旧/不受支持。我正试着让生活融入其中。

例如

"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结构,但是在字段测试中有和“chars”。

行终止符是\x0d\x0a

我在方言模块中尝试了很多doublequote和quoting变量的goes-a t-different排列,但无法正确解析。

我不能确信“或”组合只存在于场边界上。

这个问题只存在于文件中几个字段中的一个(最后一个),并且有几千个文件。


Tags: 模块文件csv数据have引号逗号方言
3条回答

你试过通过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"']

我将编写一个转换器,解析初始csv并输出一个有效的csv。您可以使用“,”或“\n作为确定定界的机制。

我现在还不能发表评论,所以我会发邮件作为答复。。。

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

相关问题 更多 >

    热门问题