使用 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.
我正在尝试使用 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.