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}}}'''