2

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

谢谢你的帮助

4

2 回答 2

4

根据您的帖子,您的意思是array1,array2,array3存储表的3列的值,并且行索引由这些数组中值的索引标识?您可以先将列组合在一起,transpose对二维数组执行 a 操作,然后逐行写入 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]
...
于 2013-03-24T13:07:38.297 回答
1

Enumerable#zip是并行遍历多个集合最常用的方法。

require 'csv'

CSV.open('csvfile.csv', 'ab') do |csv|
  array1.zip(array2,array3) { |row| csv << row }
end
于 2013-03-24T15:29:26.953 回答