我试图弄清楚如何从 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] 删除。
我来说两句