ruby – 如何将哈希输出到CSV行
发布时间:2020-12-17 04:27:41 所属栏目:百科 来源:网络整理
导读:我想将哈希映射到CSV行. 哈希中有几个对象: person1 = {'first_name' = 'John','second_name' = 'Doe','favorite_color' = 'blue','favorite_band' = 'Backstreet Boys'}person2 = {'first_name' = 'Susan','favorite_color' = 'green','second_name' = 'Sm
我想将哈希映射到CSV行.
哈希中有几个对象: person1 = {'first_name' => 'John','second_name' => 'Doe','favorite_color' => 'blue','favorite_band' => 'Backstreet Boys'} person2 = {'first_name' => 'Susan','favorite_color' => 'green','second_name' => 'Smith'} 我想将其转换为CSV文件,其中键为列,每行的值. 我可以通过像这样创建一个CSV :: Row来轻松创建标题: h = CSV::Row.new(all_keys_as_array,[],true) 我不能依赖顺序而且更重要的是,并非所有的值都会被填满. 但是,当我现在尝试通过 为了证明这一点,我写了这个小脚本: require 'csv' person1 = {'first_name' => 'John','second_name' => 'Smith'} persons = [person1,person2] all_keys_as_array = %w{first_name second_name favorite_color favorite_band} h = CSV::Row.new(all_keys_as_array,true) t = CSV::Table.new([h]) persons.each do |p| r = CSV::Row.new([],false) p.each do |k,v| r << {k => v} end t << r end puts t.to_csv 我希望这个输出: first_name,last_name,favorite_color,favorite_band John,Doe,blue,Backstreet Boys Susan,Smith,green, 取而代之的是它们出现时的顺序值.所以输出是这样的: first_name,second_name,Smith 最奇怪的是,当我通过 puts "favorite_bands: #{t['favorite_band']}" > favorite_bands: [nil,"Backstreet Boys",nil] 那么有没有办法像我期望的那样写入CSV文件? 解决方法
您可以迭代列名称
persons.each do |person| r = CSV::Row.new([],false) all_keys_as_array.each do |key| r << person[key] end t << r end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |