【发布时间】:2010-12-18 20:22:33
【问题描述】:
我编写了一个简单的 CSV 文件解析器。但是在查看wiki page on CSV formats 之后,我注意到基本格式的一些“扩展”。通过双引号特别嵌入逗号。我已经设法解析了这些,但是还有第二个问题:嵌入式双引号。
例子:
12345,"ABC, ""IJK"" XYZ" -> [1234] 和 [ABC, "IJK" XYZ]
我似乎找不到正确的方法来区分封闭的双引号和无双引号。所以我的问题是解析上述 CVS 格式的正确方法/算法是什么?
【问题讨论】:
-
看起来引号字符在您的 CSV 文件中由连续的两个引号字符表示。这类似于 SQL 数据库通常引用其单引号字符的方式,并且也用于其他上下文。您是关于这种引用方法的问题,还是您在问如何修改您的 code 来处理这个问题?我们可能需要查看您的一些代码。
-
你能告诉我们一些你的代码吗?有很多方法可以解决这个问题,但我认为将它们全部展示出来是多余的。如果您可以向我们提供您当前方法的提示,我们可以指导我们的答案以适应您已经在做的事情。
-
@Zenikoder:我已经在下面的答案中进一步解释了。
-
不要忘记嵌入的行尾字符。大多数人都会构建错误的解析器(甚至是现在流行的商业应用程序)。