如何高效地在Ruby中实现表格数据的解析与处理?

2026-04-11 20:051阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计565个文字,预计阅读时间需要3分钟。

如何高效地在Ruby中实现表格数据的解析与处理?

我想要将一个简单的解释作为Ruby数据结构展示。该表如下所示:

| 属性名 | 说明 || --- | --- || 数组 | 存储一系列元素,元素可以是任何类型的数据。 || 哈希表 | 使用键值对存储数据,键是唯一的。 || 字典 | 类似于哈希表,但通常在Ruby中使用。 || 链表 | 存储一系列元素,元素之间通过指针相连。 || 栈 | 后进先出(LIFO)的数据结构。 || 队列 | 先进先出(FIFO)的数据结构。 |

我想将一个简单的表解析为 Ruby数据结构.该表如下所示:

alt text img232.imageshack.us/img232/446/picture5cls.png img232.imageshack.us/img232/446/picture5cls.png

编辑:Here is the HTML

我想把它解析成一系列哈希.例如.,:

schedule[0]['NEW HAVEN'] == '4:12AM' schedule[0]['Travel Time In Minutes'] == '95'

有关如何做到这一点的任何想法? Perl有HTML::TableExtract,我认为它可以完成这项工作,但我找不到任何类似的Ruby库.

您可能想尝试 Hpricot(gem install hpricot,为* nix系统添加常用的sudo)

我将您的HTML放入input.html,然后运行:

如何高效地在Ruby中实现表格数据的解析与处理?

require 'hpricot' doc = Hpricot.XML(open('input.html')) table = doc/:table (table/:tr).each do |row| (row/:td).each do |cell| puts cell.inner_html end end

对于第一行,它给了我

<span class="black">12:17AM </span> <span class="black"> <a href="www.mta.info/mnr/html/planning/schedules/ref.htm"></a></span> <span class="black">1:22AM </span> <span class="black"> <a href="www.mta.info/mnr/html/planning/schedules/ref.htm"></a></span> <span class="black">65</span> <span class="black">TRANSFER AT STAMFORD (AR 1:01AM & LV 1:05AM) </span> <span class="black"> N </span>

所以我们已经归结为TD标签的内容了.还有一点工作,你就在那里.

(顺便说一下,HTML看起来有点格格不入:你在< tbody>中有< th>标签,这看起来有点反常:如果它只是< table>中的另一个级别,那么< tbody>是没有意义的.如果您的< tr>< th> …< / th>< / tr>内容在单独的< thead>部分within the table中,则更有意义.但它可能不是“您的”HTML,当然!)

本文共计565个文字,预计阅读时间需要3分钟。

如何高效地在Ruby中实现表格数据的解析与处理?

我想要将一个简单的解释作为Ruby数据结构展示。该表如下所示:

| 属性名 | 说明 || --- | --- || 数组 | 存储一系列元素,元素可以是任何类型的数据。 || 哈希表 | 使用键值对存储数据,键是唯一的。 || 字典 | 类似于哈希表,但通常在Ruby中使用。 || 链表 | 存储一系列元素,元素之间通过指针相连。 || 栈 | 后进先出(LIFO)的数据结构。 || 队列 | 先进先出(FIFO)的数据结构。 |

我想将一个简单的表解析为 Ruby数据结构.该表如下所示:

alt text img232.imageshack.us/img232/446/picture5cls.png img232.imageshack.us/img232/446/picture5cls.png

编辑:Here is the HTML

我想把它解析成一系列哈希.例如.,:

schedule[0]['NEW HAVEN'] == '4:12AM' schedule[0]['Travel Time In Minutes'] == '95'

有关如何做到这一点的任何想法? Perl有HTML::TableExtract,我认为它可以完成这项工作,但我找不到任何类似的Ruby库.

您可能想尝试 Hpricot(gem install hpricot,为* nix系统添加常用的sudo)

我将您的HTML放入input.html,然后运行:

如何高效地在Ruby中实现表格数据的解析与处理?

require 'hpricot' doc = Hpricot.XML(open('input.html')) table = doc/:table (table/:tr).each do |row| (row/:td).each do |cell| puts cell.inner_html end end

对于第一行,它给了我

<span class="black">12:17AM </span> <span class="black"> <a href="www.mta.info/mnr/html/planning/schedules/ref.htm"></a></span> <span class="black">1:22AM </span> <span class="black"> <a href="www.mta.info/mnr/html/planning/schedules/ref.htm"></a></span> <span class="black">65</span> <span class="black">TRANSFER AT STAMFORD (AR 1:01AM & LV 1:05AM) </span> <span class="black"> N </span>

所以我们已经归结为TD标签的内容了.还有一点工作,你就在那里.

(顺便说一下,HTML看起来有点格格不入:你在< tbody>中有< th>标签,这看起来有点反常:如果它只是< table>中的另一个级别,那么< tbody>是没有意义的.如果您的< tr>< th> …< / th>< / tr>内容在单独的< thead>部分within the table中,则更有意义.但它可能不是“您的”HTML,当然!)