这里有什么是CSV的不寻常的方言。
虽然为CSV没有正式的标准,有广泛的两种方法来报价:
- 行情并不特殊。即:
7" single, 12" album
是两项:7" single
和12" album
。在这种方言中,含有,
的物品存在问题。
- 行情很特别。即:
"you, me","me you"
是两项:you, me
和me, you
。在这种方言中,您可以在条目周围添加引号,以便在条目中有,
。但是,它会使包含"
的项目出现问题,就像您发现的那样。
典型的回答在第二种方法的"
问题,是逃生报价。所以项目7" single
将在CSV中显示为"7\" single"
。这当然意味着\
成为一个问题,但这很容易以同样的方式解决。 AC\DC 7" single
在CSV中显示为"AC\\DC 7\" single"
。
如果您可以采用这些传统方法之一,那就这样做。然后,您可以使用现有的CSV库,也可以推出自己的CSV库。尽管正则表达式可以使用这些格式,但我的观点是,它不是编写代码以使用CSV的最清晰的方式:我发现更清晰的状态机(例如switch (state)
语句)很好,很清晰。
如果你不能改变你的输入格式,你必须解决的难题是,当你遇到一个"
时,它是一个元字符(围绕一个项目的一对引号的一部分)还是真实的字符项目的一部分?
作为格式的所有者,由您决定规则是什么。也许"
只应该被认为是一个元字符,如果它旁边,
。
"A Town Called Malice", The Jam, 7", £6.99
所以,你必须拿出自己的规则,即工作您的域,并明确写代码来处理这种情况:但是,即使你让报价,不带引号的物品的混合物引起的问题。一种方法是将输入预处理为规范化的CSV,以便它再次适用于传统的CSV分析器。
你能提供一些数据吗? – Rahul
@Sajirupee:可能因为英寸分隔字符串。身份证使用这些'''英寸?并且Id想知道该程序是否可以编译,并且请显示您获得的输出。 – user7185318
您没有向我们展示第一个输入字符串的预期输出。 – revo