我正在使用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)
我做错什么了吗?
ruamel.yaml
无法做到这一点,它可以为您提供对齐的冒号和值,但只能在数据结构(yaml.toplevel_colon_align = True
)的顶层。 IIRC不能轻易将相同的机制应用于嵌套映射,因为如果可能的话,我不会将其限制在顶层。
除线宽外,无法控制多线流样式的顺序。在加载期间,在流式复杂节点内跟踪换行符。可以这样做(例如,以多行文字/折叠标量完成。如果同时实现了跟踪流式节点中的换行以及嵌套的对齐方式,那么更有可能在序列中输出对齐的元素:
.
.
Array : [[1,2],
[3,4],[5,6]
[7,8]]
实现此目标并非易事(作为新功能,但肯定是当前实现的子类)