8

起初这似乎很明显,但现在我不太确定。

如果 CSV 文件具有以下行:

a,

我会将其解释为具有值“a”和“”的两个字段。但是然后看一个空行,我可以很容易地争辩说它表示一个具有值“”的字段。

我接受文件末尾的空行应被解释为文件的结尾(无字段)。但是有人知道文件中的空行应该是什么意思吗?

4

3 回答 3

7

查看 Excel 在读取 CSV 文件时如何处理空行,我可以看到 Excel 不会忽略它们。

不幸的是,无法判断空行是被视为空字段还是根本没有字段,因为 Excel 始终具有相同的列数。

我看到了 CSV 格式的一些专有用途,其中可以选择如何处理空白行。最后,这是我采取的方法。我的 CSV 阅读器类有四个用于处理空行的选项:

  1. 忽略并跳过它们
  2. 将它们视为具有零字段的行
  3. 将它们视为具有一个空字段的行
  4. 将它们视为输入文件的结尾

如果有人感兴趣,我将发布新的源代码来替换现有文章Read and Writing CSV Files in C#

于 2012-10-05T23:09:38.670 回答
6

请注意,空行可能是多行引用字段的一部分:

1,2,"this
is
field number

3",4,5

是有效的 CSV。

在我见过的大多数 CSV 文件中,每行的字段数是恒定的(尽管不一定如此),所以除非 CSV 文件只有一列,否则我希望空行(引用字段之外)是一个错误。

我刚刚检查过:Python 的 CSV 解析器会忽略空行。我想这是合理的。

于 2012-10-05T16:22:12.733 回答
2

就我的理解和经验而言,它代表缺失的记录,应该被忽略。不要将其视为EOF。

于 2012-10-05T16:17:17.727 回答