python怎么解析yaml文件?

用python解析一个yaml文件。

name: "MyName !!"
name2 : !haha
  note : "name2"
massage: !description
  age : 18
  home:
    - SH
    - BJ
    - GZ

比如我现在需要拿到home的内容,需要怎么写脚本呢?
之前写过,都卡在“!description”上面,Exception说不能解决这个自定义类型tag。
我之前的解析代码:

import yaml

with open("./a.yml") as f:
    x = yaml.load(f)

print(x)

求助大神解决办法。

阅读 4.5k
3 个回答
import yaml
with open('exmaple.yaml', 'r') as f:
    exmaple = yaml.load(f)
home = exmaple["home"]
    print home 
    
 这样试一下

首先安装PyYAML

pip install PyYAML

然后你需要自定义tag,代码如下

import yaml


class HaHa(yaml.YAMLObject):
    yaml_tag = '!haha'

    def __init__(self, note):
        self.note = note

    def __repr__(self):
        return "%s(note=%r)" % (self.__class__.__name__, self.note)


class Description(yaml.YAMLObject):
    yaml_tag = '!description'
    def __init__(self, age, home):
        self.age = age
        self.home = home
    def __repr__(self):
        return "%s(age=%r, home=%r)" % (
                self.__class__.__name__, self.age, self.home)

获取home的值:

if __name__ == '__main__':
    with open('test.yaml', 'r') as f:
        yaml_data = yaml.load(f)
    print(yaml_data)
    print(yaml_data.get('massage').home)

输出:

{'name': 'MyName !!', 'name2': HaHa(note='name2'), 'massage': Description(age=18, home=['SH', 'BJ', 'GZ'])}

['SH', 'BJ', 'GZ']

test.yaml是你上面贴出来的数据

PyYAML的文档:http://pyyaml.org/wiki/PyYAML...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏