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

将Python字典转YAML时保留键"/"的双引号(适配Swagger2.0)

解决PyYAML转储时仅为键"/"保留双引号的问题

要实现只给键"/"保留双引号、其余键不受影响的效果,可通过自定义PyYAML的字典表示器来针对性处理,具体步骤如下:

  1. 编写自定义表示器函数,检测到键为"/"时强制用双引号包裹输出,其他键遵循默认处理逻辑;
  2. 将该表示器注册到PyYAML系统中;
  3. 使用修改后的YAML环境转储字典。

完整代码示例:

import yaml
from yaml.representer import SafeRepresenter

def represent_dict_with_quoted_root_key(dumper, data):
    items = []
    for key, value in data.items():
        if key == "/":
            # 对键"/"强制使用双引号包裹
            key_node = dumper.represent_scalar('tag:yaml.org,2002:str', key, style='"')
        else:
            # 其他键保持默认输出格式
            key_node = dumper.represent_data(key)
        value_node = dumper.represent_data(value)
        items.append((key_node, value_node))
    return yaml.nodes.MappingNode('tag:yaml.org,2002:map', items)

# 注册自定义表示器到SafeDumper
yaml.add_representer(dict, represent_dict_with_quoted_root_key, Dumper=yaml.SafeDumper)

# 原始字典数据
path_dict = {
    "path":{
        "/": {
            "get": {
                "summary": "Root",
                "operationId": "root__get"
            }
         }
    }
}

# 转储并输出YAML
yaml_output = yaml.dump(path_dict, Dumper=yaml.SafeDumper)
print(yaml_output)

运行后得到的YAML结果:

path:
  "/":
    get:
      summary: Root
      operationId: root__get

该方案精准实现了仅为键"/"添加双引号的需求,同时不干扰其他键的正常输出,完全满足Swagger2.0规范要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:06:19