【问题标题】:Create CSV of Array of Hashes with Different Keys创建具有不同键的哈希数组的 CSV
【发布时间】:2016-08-17 23:01:57
【问题描述】:

我有一个哈希数组,其中大部分包含相同的值;但是,一些散列具有其他键值对,而其他散列则没有。例如,数组看起来像

example_array = [{"make" => "nissan", "model" => "altima"}, {"make" => "nissan", "model" => "maxima", "price" => "20,000"}]

我的问题是我试图将这个哈希数组导出到 CSV 中。我不知道该怎么做

  1. 确保文件的标题对于数组中存在的每个可能的键都有一个列/键

  2. 确保值在正确的列中结束

任何帮助将不胜感激

【问题讨论】:

  • 如果属性缺失,默认值呢?
  • 在这种情况下,我只希望该值/单元格为空

标签: ruby csv hash


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-08-18
    • 2018-10-25
    • 2018-02-12
    • 2012-03-27
    • 2019-05-03
    • 1970-01-01
    • 2016-03-11
    • 2015-04-19
    • 2018-11-13
    相关资源
    最近更新 更多