gpt4 book ai didi

yaml - 如何为 "safe"和 "round-trip"获取类似格式的 yaml

转载 作者:行者123 更新时间:2023-12-05 02:06:34 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com