使用 re.split 获取 JSON 列表

Obtaining a list of JSONs with re.split

我正在尝试使用 re.split 方法解析包含多个 json 对象的字符串。但是我找不到我想要的模式。

收到字符串

'{"project":"rapidjson","stars":10}{"project":"rapidjson","stars":10}{"project":"rapidjson","stars":10}'

我的解析代码

def parseMultipleJson(multijson):
    print(re.split('[}+{]', multijson))

预期结果

['{"project":"rapidjson","stars":10}','{"project":"rapidjson","stars":10}', '{"project":"rapidjson","stars":10}']

实际结果

['', '"project":"rapidjson","stars":10', '', '"project":"rapidjson","stars":10', '', '"project":"rapidjson","stars":10', '']

我知道我搞砸了这个模式,但我已经尝试了一段时间的其他变体,但我找不到实现预期结果的方法

表达式 '(?<=})' 为它工作,这意味着您正在寻找以 } 结尾的每个模式。参见 positive lookbehind assertion

实际结果

['{"project":"rapidjson","stars":10}', '{"project":"rapidjson","stars":10}', '{"project":"rapidjson","stars":10}', '']

我也尝试了很多选项来捕捉模式并最终得到这个:

def parseMultipleJson(multijson):
    print(re.findall(r'{.{33}', multijson))

这给了你预期的输出。但它使用 re.findall 方法而不是 re.split.