python3 从 yaml 文件中获取嵌套字典/属性

sfchun

我试图弄清楚如何从 yaml 文件中获取嵌套数据作为字典/属性。

如果我只提供一个级别的函数,则下面的代码有效。例子 :

result = parse_yaml_file(config_yaml_file, 'section')

但如果我尝试类似的事情就会失败:

result = parse_yaml_file(yaml_file, 'section.sub-section')

或者

result = parse_yaml_file(yaml_file, '[\'section\'][\'sub-section\']')

python3代码:

def parse_yaml_file(yml_file, section):
    print('section : ' + section)
    data_dict = {}
    try:
        with open(yml_file) as f:
            data_dict = (yaml.load(f))
    except (FileNotFoundError, IOError):
        exit_with_error('Issue finding/opening ' + yml_file)

    if not section:
        return data_dict
    else: 
        return data_dict.get(section)

result = parse_yaml_file(yaml_file, 'section.sub-section.property')
print(json.dumps(result, indent=4))

是否可以仅解析 yaml 文件的部分/部分?或者只是从解析结果中检索一个子部分/属性?

我知道我可以从字典中得到它,例如:

data_dict['section']['sub-section']['property']

但我希望它灵活,而不是硬编码,因为要抓取的数据是作为函数的参数提供的。

非常感谢你的帮助。

马特

您可以尝试使用库来帮助搜索解析的 yaml 文件,例如 dpath

https://pypi.org/project/dpath/


import yaml
import dpath.util


def parse_yaml(yml_file, section):
    with open(yml_file,'r') as f:
        data_dict = yaml.load(f)
        return  dpath.util.search(data_dict,section)


parse_yaml('file.yml','section/sub-section')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

终端中的Python3

来自分类Dev

执行YAML文件中嵌入的Python代码

来自分类Dev

当YAML文件为空时加载空字典(Python 3.4)

来自分类Dev

Python3中的IndexError

来自分类Dev

YAML解析为对象(PyYAML Python3)

来自分类Dev

如何在python中使用ruamel.yaml从YAML文件中获取评论?

来自分类Dev

在python中禁用Yaml文件的别名

来自分类Dev

从嵌套字典中获取值.Python

来自分类Dev

在Python3中使用ruamel.yaml解析Yaml嵌套配置

来自分类Dev

Python3中的Pickle文件

来自分类Dev

通过Python和ruamel.yaml模块编辑YAML文件

来自分类Dev

Python3在嵌套字典和列表中按值搜索,然后获取其他最近的键/值对

来自分类Dev

在python中将字典写入YAML文件的问题

来自分类Dev

字典清单Python3

来自分类Dev

Python-解析YAML字典以按层次结构获取键

来自分类Dev

从python文件访问json中的嵌套字典

来自分类Dev

使用Python编辑yaml文件

来自分类Dev

循环浏览从yaml加载的嵌套python字典/列表

来自分类Dev

如何从python的嵌套字典中获取价值?

来自分类Dev

在python中获取yaml键值

来自分类Dev

在Python中获取嵌套字典的交集元素

来自分类Dev

Python-获取嵌套字典中的键

来自分类Dev

仅获取python3中的最后一对字典

来自分类Dev

从.yaml文件运行python命令

来自分类Dev

python3-在YAML文件中就地编辑值

来自分类Dev

无法解析 yaml 文件 python

来自分类Dev

在python中迭代YAML列表

来自分类Dev

Python获取列表中的嵌套字典值

来自分类Dev

如何在 Python 的 yaml 文件中配置多个字典键?