【发布时间】:2021-01-12 21:41:51
【问题描述】:
在 Python 中使用 ruamel.yaml,如果我使用 SafeRepresenter 或 RoundTripRepresenter 和 default_flow_style 作为默认值进行转储,则 null 按预期表示。
import sys
from ruamel.yaml import YAML
yaml = YAML(typ='rt')
yaml.dump({'key1': None, 'url': 'https://lala/', 'key2': None}, sys.stdout)
key1:
url: https://lala/
key2:
但是,如果我将 default_flow_style 更改为 None,则 null 的表示器似乎被忽略,而 null 表示为 !!null '' 例如。
import sys
from ruamel.yaml import YAML
yaml = YAML(typ='rt')
yaml.default_flow_style = None
yaml.dump({'key1': None, 'url': 'https://lala/', 'key2': None}, sys.stdout)
key: {key1: !!null '', url: https://lala/, key2: !!null ''}
将表示器显式设置为 null 没有区别,例如
SafeRepresenter.add_representer(type(None), RoundTripRepresenter.represent_none)
我尝试了上述方法,但使用SafeRepresenter 而不是RoundTripRepresenter 时的null 输出仍然是!!null '' 使用default_flow_style=None 时。
当直接从ruamel.yaml 使用default_flow_style=None 而不是对其输出进行后处理(例如查找替换)时,如何输出null 而不是!!null ''?
【问题讨论】:
-
您能否在问题中包含一个重现此行为的最小示例?如果我使用
ruamel.yaml转储具有None值的字典,则无论default_flow_style的设置如何,它都会在输出中显示为简单的null。 -
@larsks 我已经更新了
标签: python yaml ruamel.yaml