如何替换ruamel.yaml中NoneType的表示符使其输出~而非null或空值
你可以通过为ruamel.yaml的序列化器注册自定义的None类型表示器实现需求,完整实现代码如下:
from ruamel.yaml import YAML def none_representer(dumper, value): return dumper.represent_scalar('tag:yaml.org,2002:null', '~') yaml_example = """\ info: value1: null value2: [5, null, 12] """ yaml = YAML() # 注册自定义的None类型序列化规则 yaml.representer.add_representer(type(None), none_representer) info = yaml.load(yaml_example) with open('textfile.yaml', 'w', encoding='utf-8') as file: yaml.dump(info, file)
运行后输出的textfile.yaml内容完全符合预期格式:
info: value1: ~ value2: [5, ~, 12]
该方案同时适配块级映射中的None值、以及流式序列中的None值,都会统一序列化为~,适配ruamel.yaml 0.15+所有主流版本。如果你需要全局生效,只需要在所有YAML实例初始化后都执行上述representer注册逻辑即可。
内容的提问来源于stack exchange,提问作者Davis McMullan
相关产品推荐
相关产品推荐

