2017-09-14 103 views
3

让我们说我有一个字符串。分割字符串蟒蛇与改变指标

a = '[email protected]@@@@@a2&&&&&&a3::::' 

它自然地分割:A1,A2和A3以

['!!!!!!','@@@@@@','&&&&&&','::::'] 

我想用split功能,是这样的:

>>> a.split('a*') 

*表明,它不”不管什么字符在a之后。有没有一种方法可以做到这一点?

+0

可能重复的[Python:按特定模式分割](https://stackoverflow.com/questions/14814186/python-splitting-by-certain-pattern) –

+0

它真的是任何字符后'a'或只有数字? – Toto

回答

0

通过使用正则表达式,与模块re,你可以尝试这样的:

import re 
a = re.split(r'a\d','[email protected]@@@@@a2&&&&&&a3::::') 

如果你想在你开口键更具体的,试试这个:

a = re.split(r'a1|a2|a3','[email protected]@@@@@a2&&&&&&a3::::') 

并根据需要制作自定义条件。

0

虽然效率不高,如@梦龙的解决方案,你可以在技术上只用列表和字符串操作去做,而不导入re

>>> a = '[email protected]@@@@@a2&&&&&&a3::::' 
>>> s = a.split('a') 
>>> s[:1] + [x[1:] for x in s[1:] if x] 
['!!!!!!', '@@@@@@', '&&&&&&', '::::'] 

这工作,因为如果你各执'a',每一个第一个字符第一个段后的段将是你想要摆脱的*角色。

这个解决方案并不可取,只是我做了一个练习。