【发布时间】: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- (char0xa) -
您的文件在 Excel 中打开时没有问题。我也不认为引号是一个问题。 但是,引号中的字段本身包含逗号。我认为 Scala-CSV 解析器正在滚动,因为它在第 2 行看到 12 逗号,而不是在包含标题的第一行看到 9。
-
@TimBiegeleisen,这不是在字段中包含逗号的典型方式吗?通过引用该字段。
-
那么 Scala-CSV 必须知道忽略这些逗号。你可以试着把逗号去掉,看看它是否解析。如果没有,那么我会使用您的线路返回格式来追踪 David Rankin 的评论。
标签: csv