在Python中解析YAML文件并访问数据?


83

我是YAML的新手,一直在寻找解析YAML文件和使用/访问已解析YAML数据的方法。

我遇到过有关如何解析YAML文件的解释,例如PyYAML教程如何在Python中解析YAML文件”,“将Python字典转换为对象? ”,但是我没有找到一个关于如何从已解析的YAML文件访问数据的简单示例。

假设我有一个YAML文件,例如:

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

如何访问文本“ branch1文本”?

YAML解析和Python? ”提供了一个解决方案,但是我在从更复杂的YAML文件访问数据时遇到了问题。而且,我不知道是否有来自解析YAML文件,可能是类似“东西访问数据的一些标准的方式树迭代”或“ elementpath这将解析XML文件时,可以使用”符号的东西?


Answers:


151

由于PyYAML的yaml.load()功能将YAML文档解析为本地Python数据结构,因此您仅可以按键或索引访问项目。使用您所链接问题的示例:

import yaml
with open('tree.yaml', 'r') as f:
    doc = yaml.load(f)

要访问branch1 text您,请使用:

txt = doc["treeroot"]["branch1"]
print txt
"branch1 text"

因为在您的YAML文档中,branch1密钥的值在密钥之下treeroot


3
我收到“ TypeError:字符串索引必须是整数,而不是str”。看来我不能使用字符串作为索引。
星期六

您可能正在尝试访问(索引到)字符串。您可能做得太深了;您已经在尝试访问的元素了吗?
Aphex

@sattu我有同样的错误,因为键和值之间没有空格,即“ labelsize:20”而不是“ labelsize:20”
mateuszb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.