2014-11-05 104 views
0

我有一個這樣的字符串=如何在python中用多個分隔符分割一個字符串?

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

我想所有的值拆分在此字符串來得到這樣一個結果:

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

是否有可能與分割這樣的字符串多於一個分隔符?

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

非正則表達式的解決方案使用itertools.groupby

回答

7

您可以使用正則表達式

>>> 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', ')'] 
相關問題