将CSV文件转换为哈希数组 [英] Convert CSV file into array of hashes
问题描述
我有一个csv文件,例如一些曲棍球统计数据:
I have a csv file, some hockey stats, for example:
09.09.2008,1,HC Vitkovice Steel,BK Mlada Boleslav,1:0 (PP)
09.09.2008,1,HC Lasselsberger Plzen,RI OKNA ZLIN,6:2
09.09.2008,1,HC Litvinov,HC Sparta Praha,3:5
我想将它们保存在哈希数组中.我没有任何标题,我想向每个值添加键,例如"time" => "09.09.2008"
等.每一行都应像arr[i]
一样被访问,每个值都可以例如arr[i]["time"]
来访问.我更喜欢CSV
类而不是FasterCSV
或split
.您能否显示出方法或重定向到解决了类似问题的某个线程?
I want to save them in an array of hashes. I don't have any headers and I would like to add keys to each value like "time" => "09.09.2008"
and so on. Each line should by accessible like arr[i]
, each value by for example arr[i]["time"]
. I prefer CSV
class rather than FasterCSV
or split
. Can you show the way or redirect to some thread where a similar problem was solved?
推荐答案
You can use the Ruby CSV parser to parse it, and then use Hash[ keys.zip(values) ]
to make it a hash.
示例:
test = '''
09.09.2008,1,HC Vitkovice Steel,BK Mlada Boleslav,1:0 (PP)
09.09.2008,1,HC Lasselsberger Plzen,RI OKNA ZLIN,6:2
09.09.2008,1,HC Litvinov,HC Sparta Praha,3:5
'''.strip
keys = ['time', etc... ]
CSV.parse(test).map {|a| Hash[ keys.zip(a) ] }
这篇关于将CSV文件转换为哈希数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!