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

用Python解析YAML文件并访问数据?,python,xml,parsing,yaml,Python,Xml,Parsing,Yaml,我是YAML新手,一直在寻找解析YAML文件和使用/访问解析YAML中的数据的方法 我遇到过关于如何解析YAML文件的解释,例如,PyYAML,“,”,但我没有找到一个关于如何从解析的YAML文件访问数据的简单示例 假设我有一个YAML文件,例如: treeroot: branch1: branch1 text branch2: branch2 text 如何访问文本“branch1 text” “”提供了一个解决方案,但从更复杂的YAML文件访问数据时遇到问题。而且,我

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

我遇到过关于如何解析YAML文件的解释,例如,PyYAML,“,”,但我没有找到一个关于如何从解析的YAML文件访问数据的简单示例

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

 treeroot:
     branch1: branch1 text
     branch2: branch2 text
如何访问文本“branch1 text”


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

因为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
键下。

只是@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)

我得到“TypeError:字符串索引必须是整数,而不是str”。似乎我无法使用字符串作为索引。您可能试图访问(索引到)字符串。你可能走得太深了;您已经在尝试访问的元素上了吗?@sattu我也有同样的错误,因为键和值之间没有空格,即“labelsize:20”而不是“labelsize:20”可能是重复的