You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 21:33:00