我有一个像这样的字符串=
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)
是否可以使用多个分隔符拆分字符串?
你可以使用正则表达式:
>>> 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)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |