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

时间:2011-11-14 20:32:35

标签: python xml parsing yaml

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

我遇到过如何解析YAML文件的解释,例如PyYAML tutorial,“How can I parse a YAML file in Python”,“Convert Python dict to object?”,但我还没找到是一个关于如何从解析的YAML文件访问数据的简单示例。

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

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

如何访问“branch1 text”文本?

YAML parsing and Python?”提供了解决方案,但是我在从更复杂的YAML文件访问数据时遇到了问题。而且,我想知道是否有一些标准的方法从解析的YAML文件访问数据,可能类似于“tree iteration”或“elementpath”符号或解析时将使用的东西一个XML文件?

2 个答案:

答案 0 :(得分:134)

由于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键下。

答案 1 :(得分:3)

仅供参考@Aphex 的解决方案 -

如果您遇到 - “YAMLLoadWarning:不推荐使用 Loader=... 调用 yaml.load() ”,您可能需要使用 Loader=yaml.FullLoader 或 yaml.SafeLoader选项。

import yaml 

with open('cc_config.yml', 'r') as f:
    doc = yaml.load(f, Loader=yaml.FullLoader) # also, yaml.SafeLoader

txt = doc["treeroot"]["branch1"]
print (txt)