我必须解析一个逗号分隔的CSV文件,其中包括不正常使用双引号的列。文件条目如下所示:
"1920,The False Road,American,Fred Niblo,""Enid Bennett, Lloyd Hughes""
"1920,813,American,""Charles Christie, Scott Sidney"",""Wedgwood Nowell, Ralph Lewis, Wallace Beery, Laura La Plante"",mystery
-
+---+------------+-----------------------------------+----+
| | A | B | C |
+---+------------+-----------------------------------+----+
| 1 | 1920 | Fred Niblo | ...|
| 2 | 1920 | ""Charles Christie, Scott Sidney""| ...|
+---+------------+-----------------------------------+----+
如您所见,第一个条目的第4列不带引号,第二个条目是带引号的。
有办法考虑这种不正常的使用吗?
发布于 2019-10-29 05:14:14
您的csv应该看起来像这样才是正确的:
1920,The False Road,American,Fred Niblo,"Enid Bennett, Lloyd Hughes",
1920,813,American,"Charles Christie, Scott Sidney","Wedgwood Nowell, Ralph Lewis, Wallace Beery, Laura La Plante",mystery
(还请注意第一行末尾的额外逗号)
在这里,包含逗号的字段包含"
,您可以使用任何csv解析器(或库)正确地读取该字段。
但不知怎么看,你的csv被转换成了一个字段csv。整行用引号括起来,现有的引号用另一个引号转义(如预期的那样) --除了每行末尾缺少一个结束引号。
要解决这个问题,您可以首先在每行末尾添加一个引号,保存文件,然后将其解析为csv,它将为每行返回一个单元格(包含所有数据)。
然后,您可以将每个单元格的内容写入另一个文件,然后再次将该文件解析为csv,这将为您提供正确的数据。
https://stackoverflow.com/questions/58604492
复制