ruby - 将管道分隔文件转换为哈希?

标签 ruby

我正在使用 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       |
.
.
.

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

最佳答案

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

关于ruby - 将管道分隔文件转换为哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15413606/

相关文章:

arrays - 如何按段落或 block 将文件读入数组

ruby - 在没有 ssh-keygen 的情况下生成 SSH key 对(私有(private)/公共(public))

ruby-on-rails - Mechanize 从 HTML 中提取图像

ruby - 有效地获取枚举器的切片

ruby-on-rails - 如何计算循环次数

ruby - 存储在 s3 上的文件未在浏览器中呈现

ruby - 使用中间人将日期从 yaml 打印到 ruby

ruby-on-rails - Paperclip 和 Amazon S3 如何做路径?

ruby - 流量是多少? `initialize` 在做什么?

ruby - 为什么在 Ruby 对象上调用 "p"调用 to_s 然后输出非字符串?