【发布时间】:2017-04-12 18:48:18
【问题描述】:
我需要帮助了解如何将我的哈希内容转储到 csv 中。我发现下面的帖子正是我想要做的,但不幸的是,没有关于如何调用该方法以便它写入文件的示例。
原帖 Smartly converting array of hashes to CSV in ruby
def to_csv(csv_filename="hash.csv")
require 'csv'
# Get all unique keys into an array:
keys = self.flat_map(&:keys).uniq
CSV.open(csv_filename, "wb") do |csv|
csv << keys
self.each do |hash|
# fetch values at keys location, inserting null if not found.
csv << hash.values_at(*keys)
end
end
end
我的哈希数组称为结果,看起来像这样: (注意:有些键的值为零)
[{:name =>"Mike", :job = "Teacher", :status = "single"},
{:name=> "Joe", :job =>nil, :status = "married"},
{:name =>"Sally", :job = "Nurse", :status = "single"}]
我想将结果哈希的全部内容转储到 CSV 文件中以供进一步操作。我的问题是我不知道如何将结果转换为 csv 文件。当我跑步时:
results.to_csv
什么都没有发生,没有文件被创建。我想我可能必须先播种一个空白文件,但即便如此,文件中也没有任何内容。
谁能帮我理解我做错了什么以及为什么这不起作用。提前感谢您的任何帮助。
【问题讨论】:
-
请解释“什么都没发生”。如果在运行
results.to_csv时实际上没有任何反应,那么您的 Ruby 就坏了。出现这种情况的几率非常小。如果您遇到错误,请将其包含在您的问题中。