ruby-on-rails - 获取数组并转换为哈希 Ruby

标签 ruby-on-rails ruby arrays hash nokogiri

我是第一次尝试这个,我不确定我是否已经完全实现了我想要的。我正在通过屏幕抓取作为数组提取数据,并希望将它们放入哈希中。

我有一个包含 :home_team 和 :away_team 列的模型,我想将通过屏幕抓取捕获的数据发布到这些列

我希望有人可以在 rb 文件中快速运行它

require 'open-uri'
require 'nokogiri'

FIXTURE_URL = "http://www.bbc.co.uk/sport/football/premier-league/fixtures"

doc = Nokogiri::HTML(open(FIXTURE_URL))
home_team = doc.css(".team-home.teams").map {|team| team.text.strip}
away_team = doc.css(".team-away.teams").map {|team| team.text.strip}
team_clean = Hash[:home_team => home_team, :away_team => away_team]
puts team_clean.inspect

并告知这是否实际上是一个散列,因为它似乎是一个数组,因为我看不到正在输出的散列名称。我会期待这样的事情

{"team_clean"=>[{:home_team => "Man Utd", "Chelsea", "Liverpool"}, 
          {:away_team => "Swansea", "Cardiff"}]}

感谢任何帮助

最佳答案

你实际上得到了一个哈希值。但它看起来与您预期的不同。您期望哈希中包含哈希。

一些例子来说明:

hash = {}
hash.class
 => Hash 

hash = { home_team: [], away_team: [] }
hash.class
=> Hash
hash[:home_team].class
=> Array

hash = { hash: { home_team: [], away_team: [] } }  
hash.class
=> Hash
hash[:hash].class
=> Hash
hash[:hash][:home_team].class
=> Array

您所说的“哈希名称”永远不会“输出”。哈希基本上是具有不同索引的数组。澄清一下:

hash = { 0 => "A", 1 => "B" }
array = ["A", "B"]
hash[0]
=> "A"
array[0]
=> "A"
hash[1]
=> "B"
array[1]
=> "B"

基本上,对于哈希,您可以通过显式定义键来额外定义如何以及在何处查找值,而数组始终使用数字索引存储它。

关于ruby-on-rails - 获取数组并转换为哈希 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15405148/

相关文章:

ruby-on-rails - SELECT ... AS ... 使用 ActiveRecord

java - 需要将我的 HashSet 的大小显示到 TextView

arrays - 查找数组是否包含算术级数(序列)的方法是什么

ruby-on-rails - 使用 Rails 5 完成类(class)和模块分配给用户

android - 我应该使用什么 ruboto 调试工具?

ruby-on-rails - 添加字段以设计用户注册

javascript - 使用 jQuery 将 HTML 表中的整列数据提取到数组中

ruby-on-rails - 无法使用ssl在puma上运行rails应用程序

ruby-on-rails - rails 7 : Turbo stream is showing partial only

ruby-on-rails - Rails 定制 "time_ago_in_words"-ish 类型模型