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

Python字符串格式化问题:修正JSON中partition字段的引号错误

解决方案

你之前的replace没生效,是因为原字符串里的"[和]"是被转义的(实际是\"[和]\"),而且单纯替换转义符还不够,还要把外层的字符串引号改成数组格式。以下是几种可行的方法:

方法1:精准字符串替换

直接针对原字符串里的转义字符和外层引号做替换:

original_str = '''{
    "id": "123",
    "partition": "\"[\"partition_id=20240511\"]\""
}'''

# 直接替换整个目标片段,一步到位
result_str = original_str.replace('"\"[\"partition_id=20240511\"]\""', '["partition_id=20240511"]')
print(result_str)

方法2:正则表达式替换(通用场景)

如果partition_id的值不固定,用正则匹配并捕获内容,适配更多情况:

import re

original_str = '''{
    "id": "123",
    "partition": "\"[\"partition_id=20240511\"]\""
}'''

# 匹配partition字段的字符串值,捕获括号内的内容并替换为数组格式
result_str = re.sub(r'"partition": "\"\[(.*?)\]\""', r'"partition": ["\1"]', original_str)
print(result_str)

方法3:解析JSON后修改(最稳妥)

避免字符串替换的边缘情况,先解析成Python对象,修改后再转回JSON字符串:

import json

original_str = '''{
    "id": "123",
    "partition": "\"[\"partition_id=20240511\"]\""
}'''

# 解析为字典
data = json.loads(original_str)
# 提取partition字段的核心内容:去掉首尾的双引号和括号
partition_content = data['partition'].strip('"[]')
# 替换为数组
data['partition'] = [partition_content]
# 转回带缩进的JSON字符串
result_str = json.dumps(data, indent=4)
print(result_str)

以上三种方法都能得到你期望的输出:

{
    "id": "123",
    "partition": ["partition_id=20240511"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:23:13