如何在python中拆分多个分隔符的字符串?

Jos*_*ong 0 python string

我有一个像这样的字符串=

str = (((MY (NAME IS) IS) YOUR NAME)
Run Code Online (Sandbox Code Playgroud)

我想拆分此字符串中的所有值以获得如下结果:

lst = ['(', '(', '(', 'MY', '(', 'NAME', 'IS', ')', 'IS', ')', 'YOUR', 'NAME', ')']
Run Code Online (Sandbox Code Playgroud)

是否可以使用多个分隔符拆分字符串?

Ash*_*ary 7

你可以使用正则表达式:

>>> import re
>>> s = '(((MY (NAME IS) IS) YOUR NAME)'
>>> re.findall(r'[()]|[a-zA-Z]+', s)
['(', '(', '(', 'MY', '(', 'NAME', 'IS', ')', 'IS', ')', 'YOUR', 'NAME', ')']
Run Code Online (Sandbox Code Playgroud)

使用以下方法的非正则表达式解决方案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', ')']
Run Code Online (Sandbox Code Playgroud)