【发布时间】:2013-01-25 16:53:51
【问题描述】:
yaml 标记中有一个文件
a:
b:x
test2
test
test3
如何使用python(2.7.x)和PyYAML获取x?
【问题讨论】:
yaml 标记中有一个文件
a:
b:x
test2
test
test3
如何使用python(2.7.x)和PyYAML获取x?
【问题讨论】:
你不能!您发布的 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 文档时无法打开安全漏洞的函数。
【讨论】: