关于正则表达式:使用“(”和“)”拆分字符串并保留分隔符(Python)

Split a string with “(” and “)” and keep the delimiters (Python)

本问题已经有最佳答案,请猛点这里访问。

假设我有这个字符串:

1
s ="123(45)678"

我怎样才能得到这个清单?

1
l = ['123','(','45',')','678']


如果你只对'('')'感兴趣,那么str.partition就足够了。

由于您有多个分隔符并且希望保留它们,因此可以将re.split与捕获组一起使用:

1
2
3
4
5
6
import re

s ="123(45)678"

print(re.split(r'([()])', s))
# ['123', '(', '45', ')', '678']


您可以使用re.findall

1
2
3
4
import re
s ="123(45)678"
final_data = re.findall('\d+|\(|\)', s)
print(final_data)

输出:

1
['123', '(', '45', ')', '678']


如果您不想使用re,可以尝试以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
s ="123(45)678"
finalist = []
tempstring = ''
for e in s:
    if e!='(' and e!=')':
        tempstring+=e
    else:
        finalist.append(tempstring)
        finalist.append(e)
        tempstring=''
finalist.append(tempstring)
print(finalist)