null
Der Wert in YAML 1.2 kann (wie Python konstruiert None
) als null
, Null
, NULL
und ~
dargestellt werden, wie here angegeben.
Additionally:
Knoten mit leeren Inhalt interpretiert werden, als ob sie schlicht Skalare mit einem leeren Wert waren. Solche Knoten werden üblicherweise auf einen "Null" -Wert aufgelöst.
daher Ihr null
Wert ist nicht weg, ist es nur anders für null
in ruamel.yaml
durch die Standarddarstellung dargestellt, wenn RoundTripDump
verwendet. Wenn Sie diese Ausgabe wieder laden, Sie einmal mehr einen None
als Wert erhalten für den Schlüssel property
Wenn das nicht nach Ihren Wünschen Sie die Ausgabe für alleNone
/null
Werte, indem Sie ändern können:
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')
ruamel.yaml.RoundTripRepresenter.add_representer(type(None), my_represent_none)
data = ruamel.yaml.round_trip_load(yaml_str)
ruamel.yaml.round_trip_dump(data, sys.stdout)
, die wird Dump:
Kvm_BLOCK:
ip_address: 10.X.X.X
property: NULL
server_type: zone
können Sie erhalten fein Durch die Erstellung verschiedener Klassen in Python (, Null
, null
, usw.) und verschiedene Repräsentanten für jede von ihnen (ähnlich wie die string
Unterklassen in ruamel.yaml.scalarstring.py
werden verwendet, um eine Zeichenfolge auf verschiedene Arten (Doppel quoted, single quoted, Literal Block Stil Skalar). Das Problem ist, dass Sie NoneType
nicht ableiten können, also ist dies nicht so leicht transparent wie mit den String-Skalaren.