如何解析不规则使用引号的 CSV 文件?
How to parse CSV file with irregular use of quotes?
我必须解析一个以逗号分隔的 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 列没有引号,第二个条目有引号。
有没有办法考虑这种不规范的使用?
您的 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,这将 return 每行一个单元格(包含所有数据)。
然后您可以将每个单元格的内容写入另一个文件,然后再次将该文件解析为 csv,这应该会为您提供正确的数据。
我必须解析一个以逗号分隔的 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 列没有引号,第二个条目有引号。
有没有办法考虑这种不规范的使用?
您的 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,这将 return 每行一个单元格(包含所有数据)。
然后您可以将每个单元格的内容写入另一个文件,然后再次将该文件解析为 csv,这应该会为您提供正确的数据。