用最外面的大括号将字符串拆分到列表中



我有字符串

input_str = '{ "key1": 123, "key2": "val" }, { "key3": 345, "key4": {"key5": "val"} }'

我想用最外面的花括号把它分成列表:

input_list = ['{ "key1": 123, "key2": "val" }', { "key3": 345, "key4": {"key5": "val"} }]

我写了这个代码来获得它:

input_str  = '{ "key1": 123, "key2": "val" }, { "key3": 345, "key4": {"key5": "val"} }' 
input_list = []
counter = 0
current_str = ''
for char in input_str:
if char == '{':
counter += 1
if char == '}':
counter -= 1
if counter == 0:
if current_str:
current_str += char
input_list.append(current_str)
current_str = ''
else:
current_str += char
print(input_list)

还有其他蟒蛇式的方法吗?

由于您的输入是一个有效的dict的Python元组,并且预期的输出是一个JSON字符串列表,因此您可以使用ast.literal_eval来解析字符串,并将每个生成的子dict映射到json.dumps:

import ast
import json
print(list(map(json.dumps, literal_eval(input_str))))

该输出:

['{"key1": 123, "key2": "val"}', '{"key3": 345, "key4": {"key5": "val"}}']

最新更新