2017-06-01 2 views

Antwort

2

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.

Verwandte Themen