Ruby通过数组中的列写入CSV文件?

时间:2013-03-24 12:50:13

标签: ruby arrays csv

我想从几个数组生成一个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

2 个答案:

答案 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