gpt4 book ai didi

python - ruamel.yaml - 缩进序列不起作用?

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:51 25 4
gpt4 key购买 nike

MWE:

import sys
from ruamel.yaml import YAML
yaml = YAML(typ='safe')
yaml.default_flow_style = False
yaml.indent(sequence=4, mapping=2, offset=2)
d = {
'name': 'asdf',
'types': [
1,
2,
],
'class': 1,
}
import sys
yaml.dump(d, sys.stdout)
>>>
class: 1
name: asdf
types:
- 1
- 2

我期望类型在 - 条目之前有一个缩进 - 为什么事实并非如此?文档相当稀缺,而且无论我尝试什么值的组合,yaml.indent 方法在这里似乎都没有效果......

py 3.6.4/winx64,鲁梅尔 0.15.35

最佳答案

这不起作用的原因是您使用 typ='safe' ,它为您提供了 SafeLoader() 并且不支持缩进差异序列和映射之间。它由(默认)往返加载器(它是“普通”SafeLoader() 的子类)提供

所以只需更改:

yaml = YAML(typ='safe')

yaml = YAML()

yaml = YAML(typ='rt')

如果您想对此进行往返并在程序中拥有正常的 dictlist,而不是保留 CommentedMap()< 的注释CommentedList() 的子类,你可以这样做:

import sys
import ruamel.yaml

yaml_str = """\
class: 1
name: asdf
types:
- 1
- 2
"""

yamll = ruamel.yaml.YAML(typ='safe')
yamld = ruamel.yaml.YAML()
yamld.indent(mapping=4, sequence=4, offset=2)
data = yamll.load(yaml_str)
assert type(data) == dict
yamld.dump(data, sys.stdout)

关于python - ruamel.yaml - 缩进序列不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49249187/

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