将管道分隔文件转换为散列?

问题描述:

我使用Ruby 1.9.3,有两个问题:将管道分隔文件转换为散列?

(1)如何转换具有由管分离成一个哈希?:

name | student-id | maths | english | science | grade | remarks | 
abc | 10001  | 90 | 80  | 80  | A+ | excellent | 
. 
. 
. 

多个数据字段的文本文件( 2)此外,如果我有一个新的列这是另一种散列:

name | student-id | maths | english | science | grade | remarks | options  | 
abc | 10001  | 90 | 80  | 80  | A+ | excellent | <condition> | 
. 
. 
. 

在哪里,| Options |是另一散列:

| Stream  | Average | 
| Com Science | 90  | 
| Elec Eng | 85  | 
| Mech Eng | 80  | 
. 
. 
. 

我想根据他们的平均分数列出所有符合所有不同流的学生。

+0

什么是关键和价值? – Flauwekeul 2013-03-14 15:37:30

+0

@ newruby:使用四个空格缩进问题的代码部分。 – 2013-03-14 15:39:19

+0

所以,基本上,你有自己的管道分隔表的领域?这意味着主表中的每一行可以在“选项”子表中有多行? – 2013-03-14 15:42:25

首先,使用Ruby的内置CSV类。指定:col_sep值为'|'以覆盖默认值','CSV.newCSV.open都允许您指定该选项。

+0

感谢您指出我正确的方向,我能够使用“smarter_csv”宝石,并做我需要的东西。 – newruby 2013-03-19 15:55:25