使用.map在Ruby中创建多个没有分隔符的数组

问题描述 投票:0回答:1

我正在使用Nokogiri从HTML文档中的HTML表中提取数据。

document = Nokogiri::HTML(File.open("webpage.html"))
tables = document.search('table')
table = tables.first # first table in the document

document.at('table').search('tr').each do |row|
    cells = row.search('th, td').map { |cell| cell.text.strip }.values_at(0, 2) #select first and second column value
end

当我映射提取的文本时,它创建了许多数组,没有分隔符(从print输出):

["1972", "$5,500.00"]["1973", "$5,600.00"]["1974", "$6,600.00"]["1975", "$7,400.00"]["1976", "$8,300.00"]["1977", "$9,300.00"]["1978", "$10,400.00"]

我的目标是使用一个如下所示的哈希:

{"1972" => "$5,500.00", "1973" => "$5,600.00", "1974" => "$6,600.00", "1975" => "$7,400.00", "1976" => "$8,300.00", "1977" => "$9,300.00", "1978" => "$10,400.00"}

如果我使用map迭代器创建一个嵌套数组,我应该能够处理它,但我正在做的是创建多个没有分隔符(逗号)的数组。

非常感谢你的帮助,因为我甚至不知道在我收到的时候我接收的输出是什么:

print cells

或者,如何在没有分隔符的情况下将这些多个数组转换为我想要的哈希格式?

arrays ruby hash hashmap nokogiri
1个回答
1
投票

你实际上没有映射结果,你正在迭代并丢弃它们。也许你的意思是:

data = document.at('table').search('tr').map do |row|
  row.search('th, td').map { |cell| cell.text.strip }.values_at(0, 2).to_h
end

什么将在数组中每行返回一个哈希值。

© www.soinside.com 2019 - 2024. All rights reserved.