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

时间:2014-11-05 09:17:04

标签: python string

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

str = (((MY (NAME IS) IS) YOUR NAME)

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

lst = ['(', '(', '(', 'MY', '(', 'NAME', 'IS', ')', 'IS', ')', 'YOUR', 'NAME', ')']

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

1 个答案:

答案 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', ')']