使用ruaml.yaml.YAML.indent
为YAML文档指定缩进时,注释不包含在缩进的项目中。这些应缩进与它们关联的序列/映射相同。
我认为这可能是ruamel.yaml.emitter.Emitter.write_comment
或类似的发射器方法的错误,只是根据列编写注释,而不是考虑缩进级别。
根据我在其他错误报告中所读到的内容,我理解哪个序列/映射可能仍然是库中的一个未解决的问题(鉴于YAML规范指出它们是非常有效的{ {3}}),但我认为可以使用标志来明确支持它。
输入
import sys
from ruamel.yaml import YAML
text = """\
---
- a:
b:
# indent me
- item1
- item2
# indent me
c:
d: 'scalar1'
# indent me
- e:
f: 'scalar2'
"""
yaml = YAML()
yaml.explicit_start = True
yaml.indent(mapping=2, sequence=4, offset=2)
data = yaml.load(text)
yaml.dump(data, sys.stdout)
输出
---
- a:
b:
# indent me
- item1
- item2
# indent me
c:
d: scalar1
# indent me
- e:
f: scalar2
预期
---
- a:
b:
# indent me
- item1
- item2
# indent me
c:
d: scalar1
# indent me
- e:
f: scalar2
环境
使用ruamel.yaml(== 0.15.35):
ruamel.yaml-0.15.35-CP35-cp35m-manylinux1_x86_64.whl
ruamel.yaml-0.15.35-cp27-cp27mu-manylinux1_x86_64.whl
经过测试:
python 2.7.12
python 3.5.2
OS: