我是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文件?
答案 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)