CSV - 未加引号的字段不允许\ r或\n(第2行)

use*_*621 18 ruby csv ruby-on-rails fastercsv

尝试解析CSV文件,但仍然收到错误消息未加引号的字段不允许\ r或\n(第2行)..

我在这里找到了类似的主题,这里有一个提示:

  CSV.open('file.csv', :row_sep => "\r\n") do |csv|
Run Code Online (Sandbox Code Playgroud)

但不幸的是他没有用...我无法更改CSV文件,所以我需要在代码中修复它.

编辑 CSV文件样本:

A;B;C
1234;...
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

非常感谢!

jsl*_*vka 15

首先,您应该将列分隔符设置为";",因为这不是解析CSV文件的正常方式.这对我有用:

CSV.open('file.csv', :row_sep => :auto, :col_sep => ";") do |csv|
    csv.each { |a,b,c| puts "#{a},#{b},#{c}" } 
end
Run Code Online (Sandbox Code Playgroud)

从1.9.2 CSV文档:

自动发现在寻找下一个数据预读\r\n, \n\r序列.即使它出现在引用字段中,也会选择一个序列,假设您在那里有相同的行结尾.


Mik*_*e S 14

如果任何可能使用奇怪格式的程序(如Excel或电子表格)触摸或保存CSV,则更简单的解决方案:

  1. 使用任何文本编辑器打开文件(我使用Sublime Text 3)
  2. 按回车键可在任何位置添加新行
  3. 保存文件
  4. 删除刚刚添加的行
  5. 再次保存文件
  6. 再次尝试导入,错误应该消失