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

寻求匹配JSON中"} } {"模式的Python正则表达式以修正格式

解决JSON中多对象拼接的格式解析问题

首先,你碰到的核心问题是多个独立JSON对象直接拼接在一起,这种非标准格式没法被json.loads直接解析——因为标准JSON要求顶层结构只能是单个对象或数组。我们需要把这些零散的对象合并成一个标准JSON数组,关键就是精准定位两个对象之间的分隔符} } {(可能包含空格、换行等任意空白字符),再做格式修正。

正确的正则匹配方案

你之前的正则没匹配到,大概率是没考虑到任意空白字符的情况(比如多个空格、换行符都可能出现在分隔位置)。可以用这个正则来精准匹配分隔处:

import re

# 匹配 "} 任意空白 } 任意空白 {" 的模式
pattern = r'}\s*}\s*{'

完整的Python修正代码

下面是一步到位的代码示例,把你的非标准JSON转换成可直接解析的格式:

import json
import re

# 你的非标准JSON字符串
invalid_json = '{ "type": "object", "properties": ["Street", "Avenue", "Boulevard"] } } { "type": "object", "properties": ["Street", "Avenue", "Boulevard"] } }'

# 1. 替换分隔符为 }, {,把独立对象变成数组元素格式
fixed_json_part = re.sub(pattern, '}, {', invalid_json)
# 2. 给整个字符串套上数组括号,变成标准JSON数组
fixed_json = f'[{fixed_json_part}]'

# 现在可以正常解析为Python列表了
result = json.loads(fixed_json)
print(result)

方案说明

  • \s* 能匹配0个或多个空白字符(包括空格、制表符、换行符),不管原始文本里的分隔是空格还是换行,都能准确命中;
  • 替换成}, {后,我们把两个独立对象转换成了数组元素的分隔格式;
  • 最后套上[],整个字符串就变成了标准的JSON数组,json.loads就能直接解析成包含多个对象的Python列表。

额外小提示

如果你的原始文本末尾还有多余的},可以先加一步处理去掉它:

# 去掉末尾多余的 }
fixed_json_part = re.sub(r'}\s*$', '', fixed_json_part)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:47:38