我想将原始文件拆分为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
感谢回答者。他们的方法也有效。
答案 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(/[,:]/)