ruby-on-rails - 无法解析 CSV 文件 - "CSV::MalformedCSVError: Unquoted fields do not allow\r or\n"

标签 ruby-on-rails ruby csv smartercsv

我正在尝试解析上传的 CSV 文件。这是完整的错误消息:

[Worker(host:PC.local pid:69594)] Job ImportJob (id=4) FAILED (3 prior attempts) with CSV::MalformedCSVError: Unquoted fields do not allow \r or \n (line 1).

CSV 文件如下所示:

A1;A2;A3;A4;A5
B1;B2;B3;B4;B5
C1;C2;C3;C4;C5

这就是我循环遍历 CSV 文件中数据的方式:

data = SmarterCSV.process(
  file,
  {
    :col_sep => ';',
    :chunk_size => 100,
    :remove_empty_values => false,
    :remove_empty_hashes => false
  }
) do |d|

这里有什么问题?我试图将标题添加到文件中,甚至试图将其删除(上面发布的版本),但在这两种情况下我都会遇到相同的错误。我该如何摆脱它?

最佳答案

假设 CSV 文件是在 Windows 上创建的,行尾为“\r\n”也就不足为奇了。尝试明确地将其作为行分隔符:

:row_sep => "\r"

综合起来:

data = SmarterCSV.process(file, 
  :col_sep => ';', 
  :row_sep => "\r", 
  :chunk_size => 100, 
  :remove_empty_values => false, 
  :remove_empty_hashes => false) do |d|

关于ruby-on-rails - 无法解析 CSV 文件 - "CSV::MalformedCSVError: Unquoted fields do not allow\r or\n",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269544/

相关文章:

ruby-on-rails - Action Controller : Exception Caught Sass::SyntaxError in Posts#index

csv - 无法使用 gocsv 读取引用字段

python - CSV的词典列表列表

ruby - 快速处理大量 CSV 数据的最佳方式

ruby-on-rails - 用 ruby 显示日期

ruby-on-rails - 在 Rails 中为命名空间路由添加别名

iOS 使用参数获取对 Rails API 的请求

ruby - 如何在 Ruby 中生成比特币地址

ruby-on-rails - 如何迭代 ActiveRecord 属性,包括 attr_accessor 方法

ruby-on-rails - 迭代对象(如果存在),单个或多个