Python-用尖括号拆分多行字符串

Python-用尖括号拆分多行字符串,python,split,multiline,curly-braces,Python,Split,Multiline,Curly Braces,我创建了一个函数,该函数用括号分割多行字符串,并将其部分附加到列表中 例如: example = '''{First, {[string]}}, {[Second, {[(string)]}]}, {Third string}''' start = 0 results = [] count = 0

我创建了一个函数,该函数用括号分割多行字符串,并将其部分附加到列表中

例如:

example = '''{First,
                              {[string]}},
                   {[Second,
                               {[(string)]}]},
                   {Third string}'''


start = 0
results = []
count = 0
for i in range(len(example)):
    if example[i] == '{':
        if count == 0:
            start = i
        count -=1
    if example[i] == '}':
        count +=1
        if count == 0:
            results.append(example[start:i+1])

print(len(results))
print(results)
其输出为(并且是正确的,由3个元素组成的列表):

我的问题是,当我在字符串的某个地方添加“额外”的开括号和闭括号时:

example = '''{First,
                              {[s{tring]}},
                   {[Second,
                               {[(string)]}]},
                   {Third st}ring}'''
我的函数返回我(仅包含1个元素的列表):

是否有可能避免这种情况,并仅通过极端括号拆分字符串?如果你不明白我的问题,请随时提问

编辑:


我还想提到,括号之间可以是任何字符、整数、逗号、点等。一种可能的解决方案如下

l = [] 
for line in example.split('\n'): 
    if ']' in line: 
        s = f"{l[-1]}\n{line}" 
        l[-1] = s 
        else: 
            l.append(line)

我需要回答你凯哈米在回答,因为更好的可读性的代码。您的函数不适用于更多指定字符串,如:

example = '''[{This,
                      {{is,'more'},
                       [{specify,
                            string}}}'''
这是你想要的吗

重新导入
示例='''{First,
{[s{tring]},
{[第二,
{[(字符串)]}]},
{第三个st}环}''
elements=re.split(r'{*}',示例)
>>> [
“{First,\n{[s{tring]}”,
“\n{[Second,\n{[(string)]}]”,
“\n{Third st}ring}”
]   

我认为这样更好,但若字符串内部是类似“}”的字符呢?我想说的是,极端括号之间可以是任何字符,每个字符、整数、逗号、点等等。
l = [] 
for line in example.split('\n'): 
    if ']' in line: 
        s = f"{l[-1]}\n{line}" 
        l[-1] = s 
        else: 
            l.append(line)
example = '''[{This,
                      {{is,'more'},
                       [{specify,
                            string}}}'''