我很难弄清楚如何分割下面的数组并将其转换为格式,因此我可以构建一个Active Record的哈希数组。如何分割字符串数组并将其转换为散列数
我的问题源于编写一个依靠Nokogiri从网上抓取信息的应用程序。我试图提取的表中每一行的数据都被卡在一个单一的<td>
元素中。每行只有一个<td>
元素。
编辑: 第一个网页包含几百项<ul>
列表和详细资料页面的链接。我遍历每个项目,使用链接访问详细信息页面进行解析。我在下面解析的表格元素来自详细信息页面。如果你看split_array
的输出,我给出第一行(第1级)的完整数据,然后是第二行(第2级)的一部分,以显示它在结构上是相同的,但是没有价值。解决第一行的问题,解决了所有6行的问题。
<td>
Level 1
<br>
Attribute A: 24%
<br>
Attribute B: 14%
<br>
Attribute C: 15.5%
</td>
我设法以数组的形式获取以下格式的数据。
row.xpath('tr').each_with_index do |td, j|
split_array << td.text.squish.split('%')
end
这里是split_array
的部分输出:我用下面的代码分裂一长串这样做
[["Level: 1 Attribute A: 24", "Attribute B: 14", "Attribute C: 15.5"],["Level: 2 Atribute A: 36", ..etc]..etc]
我需要:
- 摆脱
Level: 1
的,Level: 2
...来自每个阵列中的第一个元素 - 拆分
Attribute
Name和th Ë浮点值到自己的领域 转换的部分成散列的数组,看起来与此类似:
[{:statistic => "Attribute A", :level_1 => 24.0, :level_2 =>36},{:statistic => "Attribute B", :level_1 => 14.0,:level_2 => 24},{:statistic => "Attribute C", :level_1 => 15.5, :level_2 => 34}]
我所要求的代码,伪代码,或想法,将发我在正确的方向将我的数组数组转换为我上面概述的散列数组。
请阅读“[mcve]”。我没有看到示例HTML中的“Level:2”。请确保您的输入数据符合您的代码和说明;我们无法摆脱那些不存在的东西。 –
如果您滚动浏览,我只展示了级别2的一部分,仅用于说明它在结构上相同但没有价值。我编辑了我的问题来进一步解释。 – ctilley79