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

如何用Python或Bash调整YAML文件的空格与空行格式

Bash 解决方案

针对你的需求,可以用sed命令完成两项格式调整:

  1. 给more_stuff下的列表项添加两个前置空格
  2. 在something块和more_stuff块之间插入空行

执行以下命令即可(替换input.yaml为你的源文件路径,output.yaml为目标输出文件):

sed -e '/^more_stuff:$/,/^\.\.\.$/ s/^- /  - /' -e '/^key2: value2$/a\' -e '' input.yaml > output.yaml

命令说明:

  • /^more_stuff:$/,/^\.\.\.$/:匹配从more_stuff:开始到...结束的行范围
  • s/^- / - /:将范围内行首的- 替换为 -,实现列表项缩进
  • /^key2: value2$/a\' -e '':在key2: value2行后插入一个空行

如果something块的最后一行不固定,可用更通用的规则——在每个非首项的顶级键(行首无空格且以:结尾)前自动插入空行:

sed -e '/^more_stuff:$/,/^\.\.\.$/ s/^- /  - /' -e '/^[^ ].*:$/{x;/./{x;p;x};x}' input.yaml > output.yaml
Python 备选方案(使用PyYAML)

若可接受第三方库,PyYAML能通过加载后重新导出的方式自动规范格式,同时保留原键顺序:

import yaml

# 加载YAML数据
with open('input.yaml', 'r', encoding='utf-8') as f:
    data = yaml.safe_load(f)

# 按要求格式写入文件
with open('output.yaml', 'w', encoding='utf-8') as f:
    yaml.dump(
        data,
        f,
        default_flow_style=False,  # 禁用流式格式
        indent=2,  # 设置缩进为2空格
        sort_keys=False,  # 保留原有键顺序
        explicit_start=True,  # 保留开头的---
        explicit_end=True  # 保留结尾的...
    )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 01:06:17