如何忽略带引号的字段中的CSV分隔符?

时间:2018-07-28 00:52:00

标签: python python-3.x csv

我有一个CSV数据转储,其格式如下:

"field1";"{"JSON-KEY": "JSON-VALUE"}";"field3"

如果我像这样使用CSV Python阅读器...

csv.reader(csvfile, delimiter=';', quotechar='"')

我遇到两个问题:

(1)当 JSON-VALUE 字符串包含定界符字符';'读者会将其视为定界符,并将VALUE分为两个字段。

(2)当(1)没问题时,JSON-VALUE字段会被误解为开头的引号要少,结尾的引号要少。例如:

 ['field1','{JSON-KEY": "JSON-VALUE"}"','field3']

这两个问题可能是相关的,但是我无法通过使用Python文档和此处的其他问题来解决。是否有人导致我在这里缺少什么?如何配置阅读器来处理此问题?

1 个答案:

答案 0 :(得分:2)

实际上,csv数据无效。引号应像这样转义:

invoicedata: ("SSPPIFFFSSSSIIIFFFFISFSFS"; enlist ",") 0:`InvoiceData.csv;

如果您无法控制csv数据的生成,则可以尝试使用"field1";"{""JSON-KEY"": ""JSON-VALUE""}";"field3" ,然后从字段中删除引号。

但是,如果json数据中有quotechar='',那就有问题了。

另一种选择是手动读取第一个字段和最后一个字段,并将它们之间的数据视为json数据。

相关问题