将CSV文件转换为哈希数组 [英] Convert CSV file into array of hashes

查看:86
本文介绍了将CSV文件转换为哈希数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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类而不是FasterCSVsplit.您能否显示出方法或重定向到解决了类似问题的某个线程?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆