Ruby/Rails,用引号之间的换行符解析 CSV

K. *_*rab 3 ruby csv ruby-on-rails

有没有办法告诉 CSV 对象引号之间的换行符不是行分隔符?

我的 CSV 文件是:

"a","b","c"
1,"some
text with line break",21
2,"blah",4
Run Code Online (Sandbox Code Playgroud)

我的代码是:

CSV.foreach(file_path, headers: true) do |row|
  puts row
end
Run Code Online (Sandbox Code Playgroud)

我希望它只返回两行,但它返回三行。

D-s*_*ide 5

您(错误地)根据打印行数判断行数。它返回两个。去搞清楚:

[4] pry(main)> CSV.foreach('example.csv', headers: true).to_a
=> [
 #<CSV::Row "a":"1" "b":"some\ntext with line break" "c":"21">,
 #<CSV::Row "a":"2" "b":"blah" "c":"4">
]
Run Code Online (Sandbox Code Playgroud)

您的代码输出三行,因为您正在打印行并且按原样打印换行符。这使它看起来好像一排变成了两排。以同样的方式思考,我会说您的源 CSV 包含 4(四!)行。这不是真的。