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

时间:2015-07-24 15:25:45

标签: ruby csv tab-delimited

CSV.open(name, "r").each do |row|
  puts row
end

我收到以下错误:

CSV::MalformedCSVError Unquoted fields do not allow \r or \n 

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

CSV.open不应该能够读取制表符分隔的文件吗?

2 个答案:

答案 0 :(得分:7)

尝试像这样指定字段分隔符:

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

请记住require 'csv'并阅读DOCS

答案 1 :(得分:1)

默认CSV使用逗号作为分隔符,这来自CSV代表“逗号分隔值”的事实。

如果你想要一个不同的分隔符(在本例中是制表符),你需要明确它。

示例

p CSV.new("aaa\tbbb\tccc\nddd\teee", col_sep: "\t").read

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