ハッシュの配列を.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クラス用のモンキーパッチを書きました。
ハッシュが均一でない場合は、誤った列にデータが含まれることになります。代わりにvalues_atを使用する必要があります。
CSV.open("data.csv", "wb") do |csv|
keys = @data.first.keys
csv << keys
@data.each do |hash|
csv << hash.values_at(*keys)
end
end
CSV
は、不均一なハッシュを処理するのに十分スマートです。 CSV :: Writer#<< のコードを参照してください
したがって、これは機能し、上記の例よりも少し単純です。
CSV.open("data.csv", "wb", {headers: @data.first.keys} ) do |csv|
@data.each do |hash|
csv << hash
end
end