我有一个像这样的字符串=
str = (((MY (NAME IS) IS) YOUR NAME)
我想拆分此字符串中的所有值以获得如下结果:
lst = ['(', '(', '(', 'MY', '(', 'NAME', 'IS', ')', 'IS', ')', 'YOUR', 'NAME', ')']
是否可以使用多个分隔符拆分字符串?
答案 0 :(得分:7)
您可以使用正则表达式:
>>> import re
>>> s = '(((MY (NAME IS) IS) YOUR NAME)'
>>> re.findall(r'[()]|[a-zA-Z]+', s)
['(', '(', '(', 'MY', '(', 'NAME', 'IS', ')', 'IS', ')', 'YOUR', 'NAME', ')']
使用itertools.groupby
的非正则表达式解决方案:
>>> from itertools import groupby
>>> def solve(s):
for k, g in groupby(s, str.isalpha):
if k:
yield ''.join(g)
else:
for x in g:
if not x.isspace():
yield x
...
>>> list(solve(s))
['(', '(', '(', 'MY', '(', 'NAME', 'IS', ')', 'IS', ')', 'YOUR', 'NAME', ')']