ハッシュの配列を .csv ファイルに変換するにはどうすればよいですか?
私が試してみました
CSV.open("data.csv", "wb") do |csv|
@data.to_csv
end
しかし、それは空白です
ハッシュの配列を .csv ファイルに変換するにはどうすればよいですか?
私が試してみました
CSV.open("data.csv", "wb") do |csv|
@data.to_csv
end
しかし、それは空白です
これを試して:
CSV.open("data.csv", "wb") do |csv|
@data.each do |hash|
csv << hash.values
end
end
CSV の最初の行にハッシュのキー (ヘッダー行) を含めたい場合は、次のようにします。
CSV.open("data.csv", "wb") do |csv|
csv << @data.first.keys # adds the attributes name on the first line
@data.each do |hash|
csv << hash.values
end
end
以下の @cgenco のコメントを読んでください: 彼は Array クラスのモンキー パッチを書きました。
キーがすべての行で同じでない場合、現在の回答は失敗します。これが最も安全な方法です。
data = [{a: 1, b: 2}, {b: 3, c: 4}]
CSV.open("data.csv", "w") { |csv|
headers = data.flat_map(&:keys).uniq
csv << headers
data.each { |row|
csv << row.values_at(*headers)
}
}
最初の行に表示されない場合でも、すべてのキーが CSV に存在します。
a | b | c |
---|---|---|
1 | 2 | |
3 | 4 |