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化し、2 次元配列で 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 に答える