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

如何将单引号字符串字典转为双引号格式以解析为字典类型

单引号字典字符串转双引号的几种方法

方法1:直接全局替换(仅适用于无特殊字符的简单场景)

如果你的字典字符串没有嵌套结构,也没有值包含单引号的情况,直接把所有单引号换成双引号就行:

original_str = "{'first_name': 'John', 'age': 89}"
target_str = original_str.replace("'", '"')
print(target_str)  # 输出: {"first_name": "John", "age": 89}

这种方法最省事,但如果遇到像{'desc': "I'm a student"}这种带单引号的值,替换后会出现格式错误,只适合简单场景。

方法2:用ast模块解析(推荐,安全可靠)

不用手动替换引号,直接用Python的ast模块把字符串解析成真实字典,再转成双引号格式的JSON字符串,能处理嵌套字典、值含单引号等复杂情况:

import ast
import json

original_str = "{'first_name': 'John', 'age': 89}"
# 解析为字典对象
dict_obj = ast.literal_eval(original_str)
# 转成双引号格式的字符串
target_str = json.dumps(dict_obj)
print(target_str)  # 输出: {"first_name": "John", "age": 89}

ast.literal_eval比eval安全,不会执行恶意代码,是处理Python格式字符串的首选方式。

方法3:正则表达式精准替换

如果一定要用正则,可以只匹配字典键和字符串值的单引号,避免误替换:

import re

original_str = "{'first_name': 'John', 'age': 89}"
# 匹配键名或字符串值的单引号,替换为双引号
target_str = re.sub(r"'([\w]+)'", r'"\1"', original_str)
print(target_str)  # 输出: {"first_name": "John", "age": 89}

如果值里包含空格或特殊字符,可把正则调整为r"'([^']+)'",能匹配任意非单引号的内容,适配更复杂的字符串值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:39:08