【发布时间】:2019-08-01 23:03:11
【问题描述】:
问题:
我有以下哈希:
hash = {1=>{:price=>"400", :brand=>"Primark"}, 2=>{:price=>"1000", :brand=>"pull&bear"}, 3=>{:price=>"1700", :brand=>""}, 4=>{:price=>"500", :brand=>"H&M"}, 5=>{:price=>"500", :brand=>“芒果”}}
我想把它转换成 csv 文件。
目前的方法:
我最接近的解决方案(inspired by) 似乎不断地覆盖自己:
require 'csv'
(1..5).each do |id|
column_names = hash[id].keys
column_values = hash[id].values
s=CSV.generate do |csv|
csv << column_names
csv << column_values
end
File.write('the_file.csv', s)
end
当前 csv 文件:
+---+------------+-------------+
| | A | B |
+---+------------+-------------+
| 1 | price,brand| |
| 2 | 500, Mango | |
+---+------------+-------------+
所需的 csv 输出:
+---+------------+-------------+
| | A | B |
+---+------------+-------------+
| 1 | price | brand |
| 2 | 400 | Primark |
| 3 | 1000 | pull&bear |
| 4 | 1700 | |
| 5 | 500 | H&M |
| 6 | 500 | mango |
+---+------------+-------------+
这里有几个问题可以处理逆向(将 csv 转换为嵌套哈希)或仅将简单哈希转换为 csv 文件,而不是嵌套哈希。我对 Ruby 还很陌生,还不能把这些点联系起来。非常感谢您的帮助!
【问题讨论】:
-
说出您想要的输出并显示您实际获得的输出会非常有用。
-
我添加了所需/当前的输出,谢谢!
-
请注意,迄今为止的两个解决方案都使用了
Hash#values_at方法。如果不明显,则使用它以便不需要对哈希键的顺序进行假设(:price和:brand)。
标签: ruby csv export-to-csv