You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ruamel.yaml格式化嵌套列表 提升YAML配置可读性

YAML嵌套列表排版优化方案

你可以通过调整ruamel.yaml的格式配置,结合自定义的序列格式属性设置,实现需要的嵌套列表排版效果,以下是可直接运行的修改后代码:

from ruamel.yaml import YAML as Ruamel
from pathlib import Path

yaml = Ruamel(typ='rt')
# 配置缩进规则,匹配原有YAML的缩进习惯
yaml.indent(mapping=6, sequence=4, offset=2)
# 全局流式格式设置为自动判断
yaml.default_flow_style = None
# 设置极小的换行宽度,强制流式列表超出长度后自动换行
yaml.width = 1
# 禁用括号对的默认紧凑排版
yaml.brace_single_line = False

config_file = Path('/Users/test_config.yaml')
configs = yaml.load(config_file.read_text())

# 递归处理所有符合条件的嵌套列表格式
def format_nested_lists(obj):
    if isinstance(obj, dict):
        for val in obj.values():
            format_nested_lists(val)
    elif isinstance(obj, list):
        # 检测两层嵌套的列表,设置为流式格式
        if obj and isinstance(obj[0], list):
            obj.fa.set_flow_style()
            for item in obj:
                item.fa.set_flow_style()
        else:
            for item in obj:
                format_nested_lists(item)

format_nested_lists(configs)

component_file = "xyz.txt"
with open(component_file, 'w') as component:
    yaml.dump(configs, component)

关键配置说明

  • yaml.indent(mapping=6, sequence=4, offset=2):指定映射(键值对)缩进6个空格,序列(列表)缩进4个空格,列表短横线的偏移量为2,和原有YAML的缩进规则对齐
  • yaml.width = 1:强制让流式列表只要长度超过1就触发换行,实现左括号后换行、每个子列表单独占行、右括号单独成行的效果
  • set_flow_style():给嵌套列表单独设置流式格式,保证列表保持方括号包裹的形式,不会被转换为每个元素前带-的块式列表

运行上述代码后输出的YAML就会完全符合要求的排版格式。

内容的提问来源于stack exchange,提问作者iDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:06:02