Ruby CSV:如何读取制表符分隔的文件?

som*_*one 5 ruby csv tab-delimited

CSV.open(name, "r").each do |row|
  puts row
end
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

CSV::MalformedCSVError Unquoted fields do not allow \r or \n 
Run Code Online (Sandbox Code Playgroud)

该文件的名称是.txt制表符分隔文件.我特意做了.我有一个.csv文件,我去了excel,并将文件保存为.txt标签分隔.所以它是制表符分隔的.

应该无法CSV.open读取制表符分隔的文件?

nex*_*tep 8

尝试指定字段分隔符,如下所示:

CSV.open("name", "r", { :col_sep => "\t" }).each do |row|
  puts row
end
Run Code Online (Sandbox Code Playgroud)

记得require 'csv'阅读DOCS


Jes*_*llo 4

默认情况下CSV使用逗号作为分隔符,这是因为 CSV 代表“逗号分隔值”。

如果您想要不同的分隔符(在本例中为制表符),您需要明确说明。

例子

p CSV.new("aaa\tbbb\tccc\nddd\teee", col_sep: "\t").read
Run Code Online (Sandbox Code Playgroud)

相关文档:http://ruby-doc.org/stdlib-2.1.0/libdoc/csv/rdoc/CSV.html#new