YAML 1.2 中的null
值(构造为 Python 的None
)可以表示为null
、和Null
,如此处所指定。NULL
~
另外:
具有空内容的节点被解释为它们是具有空值的普通标量。此类节点通常被解析为“空”值。
因此,您的值并没有消失,它只是在使用时由innull
的默认表示不同地表示。如果您再次加载该输出,您将再次获得键的 as 值null
ruamel.yaml
RoundTripDump
None
property
如果这不符合您的喜好,您可以通过执行以下操作更改所有 None
/null
值的输出:
import sys
import ruamel.yaml
yaml_str = """\
Kvm_BLOCK:
ip_address: 10.X.X.X
property: null
server_type: zone
"""
def my_represent_none(self, data):
return self.represent_scalar(u'tag:yaml.org,2002:null', u'NULL')
yaml = ruamel.yaml.YAML()
yaml.representer.add_representer(type(None), my_represent_none)
data = yaml.load(yaml_str)
yaml.dump(data, sys.stdout)
这将转储:
Kvm_BLOCK:
ip_address: 10.X.X.X
property: NULL
server_type: zone
您可以通过在 Python 中NULL
创建不同Null
的类null
(单引号,文字块样式标量)。问题是您不能子类化,因此这不像字符串标量那样容易透明地完成。string
ruamel.yaml.scalarstring.py
NoneType