缺少前导引号的CSV数据是否被视为格式错误?

缺少前导引号的CSV数据是否被视为格式错误?,csv,opencsv,Csv,Opencsv,我正在使用读取CSV文件。查看文档,我看不到关于如何处理格式错误数据的指导原则 我有一个CSV文件。具有所有预期功能:每个字段用逗号分隔,每个字段用引号括起来,以防其中一个值可能包含逗号。但是,每一行(标题除外)都缺少一个前导引号。这里有一个例子 "Header 1","Header2" value1","value2" value1","value2" 由于引号的排列方式,CSV解析器最后每隔一行跳过一行,这显然会导致问题 我会认为这是一个错误,因为第一列缺少引号,因为我知道数据应该是什么样

我正在使用读取CSV文件。查看文档,我看不到关于如何处理格式错误数据的指导原则

我有一个CSV文件。具有所有预期功能:每个字段用逗号分隔,每个字段用引号括起来,以防其中一个值可能包含逗号。但是,每一行(标题除外)都缺少一个前导引号。这里有一个例子

"Header 1","Header2"
value1","value2"
value1","value2"
由于引号的排列方式,CSV解析器最后每隔一行跳过一行,这显然会导致问题

我会认为这是一个错误,因为第一列缺少引号,因为我知道数据应该是什么样的,但是就CSV规范而言,这可以被认为是有效的吗?如果是这样,我想我必须自己建立额外的检查,以确保我没有遗漏任何行,尽管它包含有效的CSV数据。

根据:

虽然有各种各样的规范和实现 CSV格式,没有正式的 现有规范,允许各种 CSV文件的解释

简单地说,是畸形的吗?不,非正式的?没有。甚至文章(链接在RFC中)也提到行可以与引号和无引号混合匹配。

对于您显示的数据:

"Header 1","Header2"
value1","value2"
value1","value2"
如果字段将被视为未被引用,并且字段从不包含分隔符,并且没有多行字段,则我们可以认为数据的格式不正确,这将给出以下值:

"Header 1"        "Header2"
value1"           "value2"
value1"           "value2"
当然,很明显,这些数据是用来引用字段的。在这种情况下,数据的格式肯定是错误的,可以使用不同的解析器进行不同的解析(甚至可以作为多行字段)

有效的选择是:

value1,value2              // no quotes at all
"value1","value2"          // all quoted
value1,"value2,more data"  // only quoted when there is a separator inside

这是不幸的。看起来我必须自己写检查,以确保我没有漏掉任何一行,也没有错误地拾取任何一行。@MxyL签出不平衡的引号,就像你的例子中那样,肯定是格式错误的。缺乏“标准”规范并不排除常识。