python怎么解析yaml文件?

发布于 2022-09-06 07:47:47 字数 381 浏览 10 评论 0

用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)

求助大神解决办法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

樱花坊 2022-09-13 07:47:47
import yaml
with open('exmaple.yaml', 'r') as f:
    exmaple = yaml.load(f)
home = exmaple["home"]
    print home 
    
 这样试一下
终难愈 2022-09-13 07:47:47

首先安装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...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文