【问题标题】:Cannot determine why a CSV file is invalid无法确定 CSV 文件无效的原因
【发布时间】:2015-05-11 10:12:51
【问题描述】:

我有以下 CSV 文件:

textbox6,textbox10,textbox35,textbox17,textbox43,textbox20,textbox39,textbox23,textbox9,textbox16
"Monday, March 02, 2015",Water Front Lodge,"Tuesday, September 23, 2014",,Routine,#1 Johnson Street,Low,Northern Health - Mamaw/Keewa/Athab,Critical Item,4 - Hand Washing Facilities/Practices
"Monday, March 02, 2015",Water Front Lodge,"Thursday, August 01, 2013",,Routine,#1 Johnson Street,Low,Northern Health - Mamaw/Keewa/Athab,General Item,11 - Accurate Thermometer Available to Monitor Food Temperatures
"Monday, March 02, 2015",Water Front Lodge,"Wednesday, February 08, 2012",,Routine,#1 Johnson Street,Low,Northern Health - Mamaw/Keewa/Athab,Critical Item,1 - Refrigeration/Cooling/Thawing (must be 4°C/40°F or lower)
"Monday, March 02, 2015",Water Front Lodge,"Wednesday, February 08, 2012",,Routine,#1 Johnson Street,Low,Northern Health - Mamaw/Keewa/Athab,General Item,12 - Construction/Storage/Cleaning of Equipment/Utensils

这是file 告诉我的:

Little-endian UTF-16 Unicode text, with CRLF, CR line terminators

我试图使用 Scala-csv 来解析它,但总是得到格式错误的 CSV 异常。 I've uploaded it to CSV Lint 并得到 5 个“未知错误”。

目视文件,我无法确定为什么两个单独的解析器会失败。它似乎是完全普通且有效的 CSV。格式不正确怎么办?

是的,我知道 CSV 很糟糕。我没有创建它——我只需要解析它。

编辑:值得注意的是this parser 也失败了。

【问题讨论】:

  • 有些字段使用引号,有些字段不使用引号...
  • 投诉可能是由于文件具有非 Posix 行结尾。 Posix 需要newline 行终止。您可以使用sed 等在每个carriage return 之后添加newline。 (实际上这就是错误所说的 - 即只有 CR 行终止符的 CRLF 文件)。你错过了newlines - (char 0xa)
  • 您的文件在 Excel 中打开时没有问题。我也不认为引号是一个问题。 但是,引号中的字段本身包含逗号。我认为 Scala-CSV 解析器正在滚动,因为它在第 2 行看到 12 逗号,而不是在包含标题的第一行看到 9
  • @TimBiegeleisen,这不是在字段中包含逗号的典型方式吗?通过引用该字段。
  • 那么 Scala-CSV 必须知道忽略这些逗号。你可以试着把逗号去掉,看看它是否解析。如果没有,那么我会使用您的线路返回格式来追踪 David Rankin 的评论。

标签: csv


【解决方案1】:

这绝对是换行符。在此处查看 Lint 结果:
CSV Lint Validation

我复制了您的 SCV 并确保换行符是 CRLF
我使用 Notepad++ 并使用 Edit=>EOL Conversion=>Windows Format 进行转换。

【讨论】:

  • 我不认为是这样。根据 Notepad++,它已经是 CRLF。可以肯定的是,我转换为 Unix 并返回到 Windows。 Still failed。但这仍然表明正在使用 CR,所以必须关闭一些东西......
  • 顺便说一句,GitHub 能够很好地显示文件。这是一个包含相关文件的仓库:github.com/MikeHoffert/Testing-CSV。我不明白 GitHub 怎么能很好地显示这个文件,但是多个专用解析器阻塞了。
  • 在 Lint Validation Link 上有一个指向我的 CSV 文件的链接。你可以下载试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 2018-03-08
  • 2011-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多