如何为“获取类似格式的yaml”;“安全”;及;往返;

如何为“获取类似格式的yaml”;“安全”;及;往返;,yaml,ruamel.yaml,Yaml,Ruamel.yaml,ruamel.yaml根据使用的是safe还是往返representer,对简单但嵌套的字典进行不同的格式化 我不明白为什么不同的representer应该以不同的格式设置如此简单的字典,因此我想知道如何使saferepresenter看起来与以下示例中的往返相似: 从ruamel.yaml导入yaml 导入系统 数据={'data':{'interval':5,'compression':'3'},'player':{'ffmpeg':{'name':'me'} yaml=yaml(典型值为“

ruamel.yaml
根据使用的是
safe
还是
往返
representer,对简单但嵌套的字典进行不同的格式化

我不明白为什么不同的representer应该以不同的格式设置如此简单的字典,因此我想知道如何使
safe
representer看起来与以下示例中的
往返
相似:

从ruamel.yaml导入yaml
导入系统
数据={'data':{'interval':5,'compression':'3'},'player':{'ffmpeg':{'name':'me'}
yaml=yaml(典型值为“安全”)
yaml.dump(数据,系统标准输出)
这张照片

data: {compression: '3', interval: 5}
player:
  ffmpeg: {name: me}
但是

yaml=yaml()
yaml.dump(数据,系统标准输出)
打印出更好的输出:

data:
  interval: 5
  compression: '3'
player:
  ffmpeg:
    name: me
如何获得打印相似性的
safe
版本?

安全模式的输出就是PyYAML,ruamel.yaml就是从该模式生成的 默认情况下,最初派生的“叶集合”采用流样式。 这比默认值的所有块样式输出更紧凑(
typ=“rt”
), 这并不总是增加可读性。尤其是在总项目数量较少的情况下(因此总项目可以放在一个窗口中), 或者,当叶集合有许多项时(它们环绕在多行上)

所以往返默认为所有块样式的原因是因为我同意它看起来 更好。当然,当往返用于预期目的时 保留了每个系列的原始风格

差异是由
YAML()
实例上的
default\u flow\u style
属性造成的,对于
安全模式和
对于
“rt”
模式,要执行
False

import sys
import ruamel.yaml

data = {'data': {'interval': 5, 'compression': '3'}, 'player': {'ffmpeg': {'name': 'me'}}}


yaml = ruamel.yaml.YAML(typ="safe")
yaml.default_flow_style = False
yaml.dump(data, sys.stdout)
其中:

data:
  compression: '3'
  interval: 5
player:
  ffmpeg:
    name: me
如果您将属性设置为
True
,您将得到完全流式的输出