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

如何用ruamel.yaml导出含单引号字符串时去除多余双引号

问题:ruamel.yaml导出时如何给字符串添加单引号且避免多余双引号?

我需要给YAML中Type字段的值添加单引号,原始YAML字符串如下:

yaml_str = 'Type: modified'

但执行导出代码后,结果出现了不必要的双引号。我的代码如下:

import sys                                                                                  
import ruamel.yaml                                                                          
yaml = ruamel.yaml.YAML()                                                                                                                                   
data = yaml.load(yaml_str)  
data['Type'] = f"'{data['Type']}'"
yaml.dump(data, sys.stdout)

实际输出:

Type: "'modified'"

期望输出:

Type: 'modified'

我尝试过多种字符串格式化方式,也添加了yaml.preserve_quotes = True,但都没效果,求可行的解决办法?

解决办法

直接给data['Type']赋值带单引号的字符串时,ruamel.yaml会把整个内容(包括单引号)视为普通字符串内容,因此自动添加双引号包裹。要实现预期的单引号格式,需要使用ruamel.yaml提供的SingleQuotedScalarString类来创建带单引号的标量对象。

修改后的代码如下:

import sys
import ruamel.yaml
from ruamel.yaml.scalarstring import SingleQuotedScalarString

yaml = ruamel.yaml.YAML()
yaml_str = 'Type: modified'
data = yaml.load(yaml_str)
# 将值包装为单引号标量对象
data['Type'] = SingleQuotedScalarString(data['Type'])
yaml.dump(data, sys.stdout)

执行这段代码后,就能得到期望的输出:Type: 'modified'。

如果需要其他引号格式,还可以使用ruamel.yaml.scalarstring模块中的DoubleQuotedScalarString(双引号)或LiteralScalarString(块级字面量)等类,按需选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:10:18