带可变指示符的分割字符串python

带可变指示符的分割字符串python,python,string,split,Python,String,Split,假设我有一根绳子 a = '!!!!!!a1@@@@@@a2&&&&&&a3::::' 它会自然地拆分为:a1、a2和a3 ['!!!!!!','@@@@@@','&&&&&&','::::'] 我想使用split函数,类似于: >>> a.split('a*') *表示a后面的字符不重要。有没有一种直接的方法可以做到这一点?通过使用regex和modulere,您可以这样尝试

假设我有一根绳子

a = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
它会自然地拆分为:a1、a2和a3

['!!!!!!','@@@@@@','&&&&&&','::::']
我想使用
split
函数,类似于:

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

*
表示
a
后面的字符不重要。有没有一种直接的方法可以做到这一点?

通过使用regex和module
re
,您可以这样尝试:

s = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
import re

print(re.split(r'a[0-9]+', s))
import re
a = re.split(r'a\d','!!!!!!a1@@@@@@a2&&&&&&a3::::')
如果要在分割关键点中更加具体,请尝试以下操作:

a = re.split(r'a1|a2|a3','!!!!!!a1@@@@@@a2&&&&&&a3::::')

并根据您的意愿创建自定义条件。

虽然不如@Menglong的解决方案那么有效,但从技术上讲,您可以只使用列表和字符串操作,而无需导入
re

>>> a = '!!!!!!a1@@@@@@a2&&&&&&a3::::'
>>> s = a.split('a')
>>> s[:1] + [x[1:] for x in s[1:] if x]
['!!!!!!', '@@@@@@', '&&&&&&', '::::']
这是因为如果在
'a'
上拆分,则第一个段后的每个段的第一个字符都将是要删除的
*
字符


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

可能的重复是在
a
之后的任何字符还是唯一的数字?