为什么我得到这个"未定义的方法拆分"错误?

时间:2015-10-27 06:15:25

标签: ruby csv

我想将原始文件拆分为2个分隔符,逗号和冒号,然后分别存储拆分文件。我的计划是这样的:

require 'csv'

CSV.open('SplitFile.csv', "wb") do |csv|
    CSV.foreach('Original.csv') do |row|
        csv<<row.split(/[,:]/)
    end
end

但是我收到了这个错误:undefined method 'split' for #<Array:0x363d0e0> (NoMethodError)。那是为什么?

编辑:我使用以下内容开始工作:

require 'csv'
CSV.open('SplitFile.csv', "wb") do |csv|
    f = File.open('Original.csv', "r")
    f.each_line { |line|
    row = line.split(/[,:]/)
    csv << row
}
end

感谢回答者。他们的方法也有效。

2 个答案:

答案 0 :(得分:4)

拆分String's

的方法

您可以尝试row.map{|s|s.split(/[,:]/)}

之类的内容

答案 1 :(得分:0)

因为row是一个数组,而不是一个字符串。

例如:

cat mycsv.csv
row,of,CSV,data
row,of,CSV,data
row,of,CSV,data
row,of,CSV,data

CSV.foreach('mycsv.csv') do |row|
  puts row.inspect
end
=> 
["row", "of", "CSV", "data"]
["row", "of", "CSV", "data"]
["row", "of", "CSV", "data"]
["row", "of", "CSV", "data"]

我不知道Original.csv文件的内容是什么,但我认为你可以这样做:

row.first.split(/[,:]/)