Python加载YAML文件报错:无法识别'tag:yaml.org,2002:value'构造器
解决YAML读取时
tag:yaml.org,2002:value构造器错误 这个问题是因为YAML中的simple: =会被解析为带有tag:yaml.org,2002:value标签的特殊节点,而safe_load默认没有处理该标签的构造器。无需修改YAML文件,可通过自定义构造器解决:
- 定义构造函数,专门处理
tag:yaml.org,2002:value标签,返回节点的原始值 - 将构造函数注册到
SafeLoader中,再用safe_load读取文件
具体代码示例:
import yaml def handle_value_tag(loader, node): return node.value # 给SafeLoader注册自定义构造器 yaml.SafeLoader.add_constructor('tag:yaml.org,2002:value', handle_value_tag) # 读取YAML文件 with open('pathtoyamlfile', 'r') as f: data = yaml.safe_load(f)
执行后,data['simple']会被正确解析为字符串"=",同时保留safe_load的安全性。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

