Python3如何从带${}占位符key的YAML文件中提取指定key对应值
问题原因
你的代码匹配失败的核心原因是YAML文件中实际存储的key是${key_bar}格式,而非纯字符串key_bar,字符串匹配条件不触发所以没有输出。另外你使用的yaml.load()方法存在安全隐患,官方已推荐替换为yaml.safe_load()。
修正后的代码
#!/usr/bin/env python3 import yaml # 用with上下文管理器自动管理文件打开关闭,避免资源泄漏 with open("/path/to/file/test.yaml", 'r', encoding='utf-8') as yaml_file: # 使用安全加载方法避免恶意yaml代码执行风险 yaml_content = yaml.safe_load(yaml_file) target_value = None for key, value in yaml_content.items(): # 先处理key,去掉外层的${}后再匹配 processed_key = key.strip('${}') if processed_key == "key_bar": target_value = value print(target_value) # 匹配到后直接跳出循环,不需要继续遍历 break
补充说明
- PyYAML读取YAML内容时会自动去掉值外层的单引号,你获取到的
target_value就是纯字符串P98fjljnlkfn,不需要额外做去引号处理 - 如果你确认文件中所有key都是
${xxx}的固定格式,也可以直接用if key == "${key_bar}"做匹配,不需要额外处理key字符串
内容的提问来源于stack exchange,提问作者data-bite
相关产品推荐
相关产品推荐

