如何使用ruamel-yaml设置区块序列的缩进

问题描述 投票:1回答:1

我正在使用ruamel-yaml编写代码以读取YAML文件,添加内容并写回YAML。

转储YAML时,我无法将缩进设置为顶级映射

我的YAML外观(这是旧的YAML在编辑之前的外观):

Device:
      Name: "ABC"
      Version: "0.2.1"
      Year: "2011"
      Array: [[1,2],
        [3,4],[5,6],
         [7,8]]

但是,我希望YAML看起来像:

Device:
      Name     : "ABC"
      Version  : "0.2.1"
      Year     : "2011"
      Array    : [[1,2],
                 [3,4],[5,6],
                 [7,8]]

我希望所有引号都在同一行中,并且值要精确到引号的右侧:

我的代码:

yaml= ruamel.yaml.YAML()

yaml.top_level_colon_align = True

with open('text1.yaml', 'w') as fp:
    round_trip_dump(yaml_content, fp, indent=5, block_seq_indent=3)

我做错什么了吗?

python yaml pyyaml ruamel.yaml
1个回答
0
投票

ruamel.yaml无法做到这一点,它可以为您提供对齐的冒号和值,但只能在数据结构(yaml.toplevel_colon_align = True)的顶层。 IIRC不能轻易将相同的机制应用于嵌套映射,因为如果可能的话,我不会将其限制在顶层。

除线宽外,无法控制多线流样式的顺序。在加载期间,在流式复杂节点内跟踪换行符。可以这样做(例如,以多行文字/折叠标量完成。如果同时实现了跟踪流式节点中的换行以及嵌套的对齐方式,那么更有可能在序列中输出对齐的元素:

. . Array : [[1,2], [3,4],[5,6] [7,8]]

实现此目标并非易事(作为新功能,但肯定是当前实现的子类)
© www.soinside.com 2019 - 2024. All rights reserved.