我创建了将多行字符串用方括号分隔并将其部分追加到列表的函数。
示例:
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个元素:):
3
['{First,\n {[string]}}', '{[Second,\n {[(string)]}]}', '{Third string}']
我的问题是,当我在字符串中的某处添加“ extra”开括号和闭括号时:
example = '''{First,
{[s{tring]}},
{[Second,
{[(string)]}]},
{Third st}ring}'''
我的函数还给我(仅列出1个元素):
1
['{First,\n {[s{tring]}},\n {[Second,\n {[(string)]}]},\n {Third st}ring}']
可以避免这种情况,只用尖括号将字符串分开?如果您不明白我的问题,请随时提问!
编辑:
我还要提到括号之间的字符可以是char,整数,逗号,点等。
以下是一种可能的解决方案
l = []
for line in example.split('\n'):
if ']' in line:
s = f"{l[-1]}\n{line}"
l[-1] = s
else:
l.append(line)
由于需要更好的代码可读性,我需要回答kaihami。您的函数不适用于更多指定的字符串,例如:
example = '''[{This,
{{is,'more'},
[{specify,
string}}}'''
这是您想要的吗?
import re
example = '''{First,
{[s{tring]}},
{[Second,
{[(string)]}]},
{Third st}ring}'''
elements = re.split(r'{*},', example)
>>> [
'{First,\n {[s{tring]}',
'\n {[Second,\n {[(string)]}]',
'\n {Third st}ring}'
]