【问题标题】:Python: Read information from .yamlPython:从 .yaml 读取信息
【发布时间】:2018-11-21 13:29:05
【问题描述】:

我设置了一个 .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:'operator'。

那么我该如何处理这个条目或者甚至比它低一级的条目呢? 感谢您的帮助!

【问题讨论】:

    标签: yaml python-3.7 pyyaml


    【解决方案1】:

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

    而不是像上面那样在我的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
    

    这正是我想要的。

    【讨论】:

    • 我发现这个答案很有趣
    猜你喜欢
    • 2022-11-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多