我怎么能读YAML文件?
我有这样一个YAML文件:
Company1: name: Something1 established: 2000 # Company2: name: Something2 established: 1932
阅读YAML文件:(**更新**)
config = YAML.load_file('file.yaml') config.each do |key, value| if(key == 'name') company_name = value #year = config['Company1']['established'] year = config.fetch(key)['established'] end end
**更新**现在上面的代码正常工作,但它显示的结果如下:
company1 => {"name" => "something1"} => {"established year" => 2000"}
如何删除{}和“”?
好的,这是你的YAML文件吗?
Company1: name: Something1 established: 2000 Company2: name: Something2 established: 1932
好的,现在这个YAML文件实际上代表了一个哈希。 有两个键,即Company1,Company2(因为它们是主要条目,子条目(名称和已建立)在它们下面缩进)。 这两个键的值再次是哈希。 这个Hash也有2个键,即name和established。 它们的值分别为Something1和2000等。
所以当你这样做的时候
config=YAML.load_file('file.yml')
并使用打印配置(表示YAML文件内容的Hash),
puts config
你得到以下输出:
{"Company1"=>{"name"=>"Something1", "established"=>2000}, "Company2"=>{"name"=>"Something2", "established"=>1932}}
所以我们有一个Hash对象,如YAML文件所描述的那样。
使用这个Hash非常简单。
由于每个公司的名称和年份都是由外部哈希(company1,company2)保存的单独哈希,我们可以遍历这些公司。 以下代码打印哈希。
config.each do |company,details| puts company puts "-------" puts "Name: " + details["name"] puts "Established: " + details["established"].to_s puts "\n\n" end
因此,在每次迭代中,我们都可以访问Hash的每个(键,值)。 在第一次迭代中,我们将company
(密钥)作为Company1
,将details
(值)作为{"name"=>"Something1", "established"=>2000}
希望这有帮助。
YAML使用缩进来进行作用域 ,所以请尝试,例如:
Company1: name: Something1 established: 2000 Company2: name: Something2 established: 1932