我想从几个数组生成一个csv文件。 这是我的代码:
require 'csv'
CSV.open("csvfile.csv", "ab") do |csv|
csv << [array1]
csv << [array2]
csv << [array3]
end
我需要这种输出格式:
array1,array2,array3
array1,array2,array3
array1,array2,array3
array1,array2,array3
array1,array2,array3
Thx for you help
答案 0 :(得分:4)
根据你的帖子,你的意思是array1,array2,array3存储表的3列的值,行索引是由这些数组中的值的索引标识的吗?您可以先将列组合在一起,在二维数组上执行transpose
,然后逐行写入CSV文件。
require 'csv'
table = [array1, array2, array3].transpose
CSV.open('csvfile.csv', 'ab') do |csv|
table.each do |row|
csv << row
end
end
你会得到一个像这样的csv文件:
array1[0], array2[0], array3[0]
array1[1], array2[1], array3[1]
array1[2], array2[2], array3[2]
...
答案 1 :(得分:1)
Enumerable#zip
是并行遍历多个集合的最常用方法。
require 'csv'
CSV.open('csvfile.csv', 'ab') do |csv|
array1.zip(array2,array3) { |row| csv << row }
end