在 Python 中解析 YAML 文件并访问数据?
我是 YAML 新手,一直在寻找解析 YAML 文件并使用/访问解析的 YAML 中的数据的方法。
我遇到过有关如何解析 YAML 文件的解释,例如 PyYAML tutorial, " 如何在 Python 中解析 YAML 文件", “将 Python dict 转换为对象?”,但我还没有找到的是有关如何从解析的 YAML 文件访问数据的简单示例。
假设我有一个 YAML 文件,例如:
treeroot:
branch1: branch1 text
branch2: branch2 text
如何访问文本“branch1 text”?
“YAML 解析和 Python?”提供了一个解决方案,但我在从更复杂的 YAML 文件。而且,我想知道是否有某种标准方法可以从解析的 YAML 文件访问数据,可能类似于“树迭代”或“elementpath”符号或其他符号解析 XML 文件时使用?
I am new to YAML and have been searching for ways to parse a YAML file and use/access the data from the parsed YAML.
I have come across explanations on how to parse the YAML file, for example, the PyYAML tutorial, "How can I parse a YAML file in Python", "Convert Python dict to object?", but what I haven't found is a simple example on how to access the data from the parsed YAML file.
Assume I have a YAML file such as:
treeroot:
branch1: branch1 text
branch2: branch2 text
How do I access the text "branch1 text"?
"YAML parsing and Python?" provides a solution, but I had problems accessing the data from a more complex YAML file. And, I'm wondering if there is some standard way of accessing the data from a parsed YAML file, possibly something similar to "tree iteration" or "elementpath" notation or something which would be used when parsing an XML file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于 PyYAML 的 yaml.load() 函数将 YAML 文档解析为原生 Python 数据结构,因此您只需按键或索引访问项目即可。使用您链接的问题中的示例:
要访问
branch1 文本
,您将使用:因为在您的 YAML 文档中,
branch1
键的值位于树根
键。Since PyYAML's
yaml.load()
function parses YAML documents to native Python data structures, you can just access items by key or index. Using the example from the question you linked:To access
branch1 text
you would use:because, in your YAML document, the value of the
branch1
key is under thetreeroot
key.仅供参考 @Aphex 的解决方案 -
如果您遇到 -
您可能需要使用
Loader=yaml.FullLoader
或Loader=yaml .SafeLoader
选项。Just an FYI on @Aphex's solution -
In case you run into -
you may want to use the
Loader=yaml.FullLoader
orLoader=yaml.SafeLoader
option.