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

Using .map creates multiple arrays without a separator in Ruby

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

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

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

["1972", ",500.00"]["1973", ",600.00"]["1974", ",600.00"]["1975", ",400.00"]["1976", ",300.00"]["1977", ",300.00"]["1978", ",400.00"]

我的目标是拥有一个如下所示的散列:

{"1972" => ",500.00", "1973" => ",600.00", "1974" => ",600.00", "1975" => ",400.00", "1976" => ",300.00", "1977" => ",300.00", "1978" => ",400.00"}

如果我使用映射迭代器创建嵌套数组,我应该能够处理它,但无论我在做什么,都是在创建多个没有分隔符(逗号)的数组。

我什至不知道如何称呼我在以下情况下收到的输出:

print cells

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

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

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

什么会 return 数组中每行一个散列。