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

如何从含内部双引号的Python字符串中提取字典?

解决方法

针对这种值内包含未转义双引号的JSON格式字符串,我们可以通过正则表达式精准替换值内部的双引号为单引号,再进行解析。以下是具体实现步骤:

步骤1:处理字符串,替换值内的双引号

使用正则表达式匹配并替换值部分的内部双引号,保留键的双引号以及值的首尾双引号:

import re
from ast import literal_eval

# 原动态生成的字符串
text = '''
{
"key1": "this is "value1" right",
"key2": "this is "value2" right"
}
'''

# 正则替换值内部的双引号为单引号
# 匹配规则:排除键的引号(后接冒号)和值的首尾引号(前接冒号/空格、后接逗号/大括号)
processed_text = re.sub(r'(?<![:\s])"(?![:\s,}])', "'", text)

步骤2:解析为字典

处理后的字符串符合Python字典格式,使用literal_eval即可安全解析:

result = literal_eval(processed_text)
print(result)
# 输出:{'key1': "this is 'value1' right", 'key2': "this is 'value2' right"}

说明

  • 正则表达式(?<![:\s])"(?![:\s,}])的作用:
    • (?<![:\s]):正向否定预查,确保双引号前不是冒号或空格(排除键的结尾引号和值的开头引号)
    • (?![:\s,}]):负向肯定预查,确保双引号后不是冒号、空格、逗号或大括号(排除键的开头引号和值的结尾引号)
  • 使用literal_eval而非json.loads是因为替换后的字符串使用单引号包裹值内的内容,json.loads仅支持双引号格式的JSON,而literal_eval可以解析合法的Python字典结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:52:24