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

使用ruamel.yaml dump输出出现多余"..."的原因排查

ruamel.yaml dump输出额外...符号的原因及解决

问题场景

我正在学习用ruamel.yaml处理YAML文件排序,现有example.yml内容如下:

---
- job:
    name: this is the job name

对应的Python代码:

import sys
import ruamel.yaml

yaml = ruamel.yaml.YAML()  # defaults to round-trip

# Read YAML file
with open('example.yml', 'r') as f:
    data = yaml.load(f)

yaml.dump(data[0]['job']['name'], sys.stdout)

执行后成功输出作业名称,但额外多了一行...,想知道这个符号的来源和原因。

原因解析

...是YAML规范里的块样式标量结束标记。ruamel.yaml默认启用的round-trip模式,会严格遵循YAML的格式规则:当你直接dump一个单独的标量(比如这里的字符串this is the job name)时,会以块样式输出该标量,而块标量需要...来明确标记内容的结束位置,避免后续可能的内容被误解析成当前标量的一部分。

解决方法

方法1:直接用print输出(推荐)

如果你只是需要输出这个字符串内容,没必要用yaml.dump,直接用Python的print函数即可,不会产生额外标记:

print(data[0]['job']['name'])

方法2:修改ruamel.yaml配置

如果一定要用yaml.dump输出,可通过修改配置让标量以流式(inline)方式输出,这样就不会生成...:

import sys
import ruamel.yaml

yaml = ruamel.yaml.YAML()
yaml.default_style = ''  # 设置标量为流式输出

with open('example.yml', 'r') as f:
    data = yaml.load(f)

yaml.dump(data[0]['job']['name'], sys.stdout)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:45:42