使用缩进

时间:2018-03-15 21:27:20

标签: yaml ruamel.yaml

使用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:

  • Ubuntu 16.04.3 LTS

0 个答案:

没有答案