【发布时间】:2013-05-06 20:36:44
【问题描述】:
我有一个简单的 CSV 文件,它使用 | (管道)作为引号字符。将我的 Rails 应用程序从 Ruby 1.9.2 升级到 1.9.3 后,我收到“CSV::MalformedCSVError: Missing or stray quote in line 1”错误。
如果我弹出打开 vim 并替换 |使用常规引号、单引号甚至“=”,文件可以正常工作,但是 |和 * 导致错误。有人对可能导致这种情况的原因有任何想法吗?这是一个可以重现错误的简单单行代码:
@csv = CSV.read("public/sample_file.csv", {quote_char: '|', headers: false})
也在 Ruby 2.0 和 irb w/out loading rails 中重现了这一点。
编辑:这里是 CSV 中的一些示例行
|076N102 |,|CARD |,| 1|,|NEW|,|PCS |
|07-1801 |,|BASE |,| 18|,|NEW|,|PCS |
【问题讨论】:
-
如何从 public/sample_file.csv 添加几行来向我们展示数据?
-
@hd1 完成 - 请参见上文!
-
我也不例外。文件中是否有任何有趣的字节?如果你
cat -vCSV,有什么奇怪的地方吗? -
@muistooshort 没有奇怪的字符。这是 link to the sample file 如果你愿意,here's a screenshot 是 cat -v 的输出
-
CSV.foreach 也有问题。如果您删除 quote_char 选项,一切正常。
标签: ruby csv ruby-1.9.3 ruby-1.9.2 ruby-2.0