Python:从.yaml中读取信息

时间:2018-11-21 13:29:05

标签: yaml python-3.7 pyyaml

我设置了一个.yaml文件,其中包含我的测量点的元数据。在此.yaml文件中,我使用了包含信息的嵌套列表和字典,例如:

stations:
  - XXXX:
      statnr: 11111
      name: NAME
      name_csv: CSV
      name_snowpack: NAME_SHORT
      lat: 11.11111
      lon: 11.22222
      alt: 1111
      type: TYPE
      operator: OPERATOR
      param: 
        - x1
        - x2
        - x3
        - x4
        - x5
  - YYYY:
      statnr: 22222
      name: NAME2
      name_csv: CSV2
      name_snowpack: NAME_SHORT2
      lat: 22.22222
      lon: 22.33333
      alt: 2222
      type: TYPE2
      operator: OPERATOR2
      param: 
        - y1
        - y2
        - y3
        - y4
        - y5

接下来,我尝试从该文件中读取特定条目。

import yaml
with open('./config/stations.yaml','r') as file:
    meta = yaml.load(file)
    stations = meta['stations'] 
    print(stations[0])

这可以工作并打印出有关列表条目“ XXXX”的所有信息,但是如果我只想像在python字典中那样检索有关运算符的信息:

print(stations[0]['operator'])

我得到一个:KeyError:“操作员”。

那么我该如何解决这个条目,或者甚至是在其下一级的条目? 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我自己找到了问题的答案。显然以前没有尝试过足够彻底。

在我的stations.yaml中没有像上面那样显示电台列表:

stations: 
  - XXXX:
     statnr:1111
     ....
  - YYYY:
     statnr:2222
     ....

我使用另一本词典:

stations: 
  XXXX:
    statnr:1111
    param:
      -x1
      -x2
    ....
  YYYY:
    statnr:2222
    param:
      -x1
      -x2
    ....

通过这种方式,我可以使用:

import yaml

with open('./config/stations.yaml','r') as file:
    meta = yaml.load(file)
    stations = meta['stations'] 
    txt = stations['XXXX']['param'][0]   
    print(txt) 

并获得结果

x1

这正是我想要的。