我想从列表中提取一组数字。列表项由其中的标题标识,并以随机顺序出现。我想(例如在第一个列表项中)将数字( 1,287,498
)分配给包含在同一 <li>
中的标题标签 ( Russia
)。
<ul>
<li>
<h6>Russia</h6>
<p>Red</p>
<p>1,287,498</p>
</li>
<li>
<h6>USA</h6>
<p>Blue</p>
<p>782,2378,223</p>
</li>
...etc.
</ul>
我想要这样的东西:
russia = 1,287,498
我试过用XPath,但是没用,大概是因为顺序是随机的;它一直分配错误的变量。
最佳答案
lis = doc.xpath('//li') # Or however you are getting the right elements
data = Hash[ lis.map{ |li| [li.at('h6').text, li.search('p').last.text] }]
#=> {
#=> "Russia" => "1,287,498",
#=> "USA" => "782,2378,223",
#=> }
p data["Russia"]
#=> "1,287,498"
此答案假定
<p>
带数字的是<li>
中的最后一段.由于您尚未共享完整文档,因此很难知道这是否正确。
关于ruby - 使用周围元素引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158449/