我是第一次尝试这个,我不确定我是否已经完全实现了我想要的。我正在通过屏幕抓取作为数组提取数据,并希望将它们放入哈希中。
我有一个包含 :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/