我有一个csv文件,一些曲棍球数据,例如:

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

我想把它们保存在一个散列数组中.我没有任何标题,我想 for each 值添加键,比如"time" => "09.09.2008"等等.每一行都应该可以访问,比如arr[i],每一个值都应该访问,比如arr[i]["time"].我更喜欢CSV级而不是FasterCSVsplit级.你能指出解决类似问题的方法或重定向到某个线程吗?

推荐答案

您可以使用Ruby CSV parser来解析它,然后使用Hash[ keys.zip(values) ]将其变成散列.

例子:

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) ] }

Ruby相关问答推荐

使用Mac命令行解密用Ruby加密的Zip

带有(*)签名的Ruby方法

为什么我的二维 Ruby 数组的多个值会发生变化,尽管只更改了其中一个?

删除带括号的子表达式

有人可以解释 Ruby 在块中使用管道字符吗?

Ruby: initialize() vs 类体(class body)?

判断文件是否包含字符串

截断、事务和删除数据库策略的区别

无法在 OSX Lion 上使用 RVM 安装 Ruby 企业版

根据另一个数组的元素对数组进行排序

按可能为 nil 的属性对对象的 ruby​​ 数组进行排序

ActionController::UnknownFormat

获取Ruby中数组的差异

我可以使用 `else if` 而不是 `elsif` 吗?

在不同的换行符上拆分

如何在 Mac OS X Lion 中安装 Ruby 1.9.3?

如何修复错误的 URI 不是 URI

ruby 中&:运算符的功能是什么?

计算文件中的行数而不将整个文件读入内存?

Ruby:从 Ruby 中的变量创建哈希键和值