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

Is CSV data with missing leading quotations considered malformed?

我正在使用 OpenCSV 读取 CSV 文件。查看文档,我没有看到有关如何处理格式错误数据的指南。

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

"Header 1","Header2"
value1","value2"
value1","value2"

由于引号的排列方式,CSV 解析器最终跳过了每一行,这显然会导致问题。

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

根据 rfc for CSV files:

While there are various specifications and implementations for the CSV format, there is no formal specification in existence, which allows for a wide variety of interpretations of CSV files.

简单地说,格式错误?不,非正式?没有。甚至 this 文章(链接在 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