创建具有不同键的哈希数组的 CSV
Posted
技术标签:
【中文标题】创建具有不同键的哈希数组的 CSV【英文标题】:Create CSV of Array of Hashes with Different Keys 【发布时间】:2016-08-17 23:01:57 【问题描述】:我有一个哈希数组,其中大部分包含相同的值;但是,一些散列具有其他键值对,而其他散列则没有。例如,数组看起来像
example_array = ["make" => "nissan", "model" => "altima", "make" => "nissan", "model" => "maxima", "price" => "20,000"]
我的问题是我试图将这个哈希数组导出到 CSV 中。我不知道该怎么做
确保文件的标题对于数组中存在的每个可能的键都有一个列/键
确保值在正确的列中结束
任何帮助将不胜感激
【问题讨论】:
如果属性缺失,默认值呢? 在这种情况下,我只希望该值/单元格为空 【参考方案1】:你可以这样写:
require 'csv'
headers = example_array.inject([]) |res, h| h.keys | res #all possible headers
#=> ["make", "model", "price"]
rows = example_array.map |h| h.values_at(*headers)
#=> [["nissan", "altima", nil], ["nissan", "maxima", "20,000"]]
CSV.generate do |csv|
csv << headers
rows.each do |row|
csv << row
end
end
如果你想在文件中写入csv,只需写CSV.open("myfile.csv", "w")
而不是CSV.generate
。
【讨论】:
以上是关于创建具有不同键的哈希数组的 CSV的主要内容,如果未能解决你的问题,请参考以下文章
如何在jquery中将两个具有不同键的不同数组组合成一个数组