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

Python使用yaml.dump生成指定格式YAML的实现疑问

实现指定格式的YAML生成方案

要生成你需要的流式带换行缩进的YAML格式,不能用手动字符串拼接(会被识别为字符串值),也不能依赖字典的默认序列化(会生成块式风格),需要通过YAML库的样式配置来实现,以下是两种常用库的解决方法:

方法1:使用PyYAML库

PyYAML支持通过参数控制输出风格,通过设置default_flow_style=None配合缩进、宽度参数,强制列表内的映射采用流式并换行:

import yaml

data = {'hints': [{'content': '...', 'foo': 'bar'}]}

yaml_output = yaml.dump(
    data,
    default_flow_style=None,
    indent=4,
    width=1,  # 强制每个键值对单独换行
    allow_unicode=True
)

print(yaml_output)

输出结果:

hints:
    - {
        content: "...",
        foo: "bar"
      }

方法2:使用ruamel.yaml库(更精准控制)

ruamel.yaml对YAML样式的控制更灵活,可以单独指定列表项的映射为流式风格:

from ruamel.yaml import YAML
import sys

yaml = YAML()
yaml.indent(mapping=4, sequence=4, offset=2)  # 配置缩进规则

data = {'hints': []}
# 为列表项指定流式风格的映射
data['hints'].append(yaml.seq_item({'content': '...', 'foo': 'bar'}, flow_style=True))

yaml.dump(data, sys.stdout)

该代码同样会生成符合要求的YAML格式。

关键注意事项

  • 避免手动拼接字符串:这种方式会让整个花括号结构被识别为字符串值,导致YAML解析异常。
  • 块式风格是YAML的标准格式之一,如果没有特殊格式要求,默认生成的块式风格也是合法且易读的;只有当必须匹配特定格式时,才需要使用上述配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:55:15