我正在使用ruamel.yaml发出一系列事件,以创建混合流样式的自定义yaml文件格式
我发现自己无法发出值为“null”的ScalarEvent,因此它在YAML文件中显示为字符串“null”,而不是YAML关键字null
以代码形式,如果我尝试
dumper = yaml.Dumper(out_file, width=200)
param = 'field'
param_value = 'null'
dumper.emit(yaml.MappingStartEvent(anchor=None, tag=None, implicit=True, flow_style=True))
dumper.emit(yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, True), value=param))
dumper.emit(yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, True), value=param_value))
dumper.emit(yaml.MappingEndEvent())
我明白了
field: null
我倒想看看
field: 'null'
您的代码不完整,但由于您在 映射事件时,您没有获得所显示的代码,也永远无法获得所需的输出
如果你想走这条路,那么看看代码中唯一的地方 其中
ruamel.yaml
代码发出ScalarNode
。它在serializer.py
中:从中,您可以选择需要添加
style
参数进一步挖掘将显示这应该是一个单一的 字符串,在本例中为单引号('
),用于强制使用单引号标量这给了你想要的:
然而,我认为你正在使你的生活方式变得更加困难
ruamel.yaml
有 在往返过程中保留流样式,然后创建一个功能数据结构并转储它 而不是恢复到使用事件驱动转储程序:这使得:
相关问题 更多 >
编程相关推荐