【发布时间】:2016-04-19 18:34:04
【问题描述】:
我正在尝试使用 YAML 文件中的随机键值对,如下所示:
'user_agents':
'Mozilla': '5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
'Mozilla': '5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)'
'Mozilla': '5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'
'Mozilla': '4.0 (compatible; MSIE 6.0; Windows NT 5.1)'
使用这个脚本:
require 'mechanize'
require 'yaml'
info = YAML.load_file('test-rand.yml')
@user_agent = info['user_agents'][info.keys.sample]
agent = Mechanize.new
agent.user_agent = @user_agent
if @user_agent.nil?
puts "The user agent is nil"
else
puts "Using: #{@user_agent}"
end
但是,在运行此脚本时,我不断收到 The user agent is nil,您如何从 YAML 文件中提取随机键/值?
我也试过@user_agent = info['user_agents'][info[rand(values.size)]]
【问题讨论】:
-
yaml 转换为哈希值,而 ruby 中的哈希值只能包含唯一键,因此实际上您始终只有最后一个键
'Mozilla': '4.0 (compatible; MSIE 6.0; Windows NT 5.1)'。 -
有没有办法解决这个问题?
-
使用 yaml 文件中的唯一键。
-
这没有回答问题,有没有办法解决这个问题,比如给一个键多个值?
标签: ruby random yaml key-value