【问题标题】:Parsing yaml python [closed]解析yaml python [关闭]
【发布时间】:2013-01-25 16:53:51
【问题描述】:

yaml 标记中有一个文件

 a:
  b:x
  test2
  test
  test3

如何使用python(2.7.x)和PyYAML获取x?

【问题讨论】:

    标签: python yaml pyyaml


    【解决方案1】:

    你不能!您发布的 YAML 会生成一个仅包含一个键 a 的字典,该键映射到值 "b:x test2 test test3" - 您可以通过 pasting your YAML here 轻松对其进行测试。

    这样做的原因是您不能混合使用 key: value 对和无密钥项(就像在数组中一样)。

    但是,我们假设您有正确的 YAML,其中包含一个对象 a,其中包含另一个将 b 映射到 x 的对象。比如这个:

    a:
        b: x
        c: test2
        d: test
        e: test3
    

    在这种情况下,您将使用 foo['a']['b'] 访问 x,其中 foo 是您的 YAML 解析器返回的对象。

    获取foo 的python 代码可能如下所示:

    import yaml
    with open('yourfile.yaml') as f:
        foo = yaml.safe_load(f)
    

    我正在使用safe_load,因为您很可能不打算从您的 YAML 文档创建任意 Python 对象,因此您希望使用一个在传递恶意 YAML 文档时无法打开安全漏洞的函数。

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 2011-05-19
      • 2013-06-10
      • 2023-03-17
      • 1970-01-01
      • 2019-06-27
      • 2016-03-23
      • 2018-08-29
      • 1970-01-01
      相关资源
      最近更新 更多