作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ruamel.yaml
根据它使用的是 safe
还是 round-trip
代表,以不同方式格式化一个简单但嵌套的字典。
我不明白为什么不同的代表应该以不同的方式格式化这样一个简单的字典,所以我想知道如何让 safe
代表看起来类似于 round-trip
以下示例中的一个:
from ruamel.yaml import YAML
import sys
data = {'data': {'interval': 5, 'compression': '3'}, 'player': {'ffmpeg': {'name': 'me'}}}
yaml = YAML(typ='safe')
yaml.dump(data, sys.stdout)
这打印
data: {compression: '3', interval: 5}
player:
ffmpeg: {name: me}
但是
yaml = YAML()
yaml.dump(data, sys.stdout)
打印出更好的输出:
data:
interval: 5
compression: '3'
player:
ffmpeg:
name: me
如何获得打印相似性的安全
版本?
最佳答案
"safe"
模式的输出是 PyYAML,ruamel.yaml 来自最初派生的,默认情况下,“叶集合”是流式的。这比默认 (typ="rt"
) 的全 block 式输出更紧凑,这并不总是增加可读性。特别是在项目总数较少的情况下(因此总数适合一个窗口),或者当叶集合有很多项时(并且它们包含多行)。
所以往返默认为all-block-style的原因是因为我同意它看起来更好。当然,当往返用于其预期目的时,保留每个系列的原始风格。
差异是由 YAML()
实例上的 default_flow_style
属性设置为 None
造成的 “安全”
模式和对于 "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
,您将获得完全流式的输出。
关于yaml - 如何为 "safe"和 "round-trip"获取类似格式的 yaml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62688584/
我是一名优秀的程序员,十分优秀!