Вместо использования регулярного выражения (которое будет разумным делом здесь), вы можете, например, используйте itertools.groupby
для группировки символов по тому, являются ли они разделителями или нет, а затем сохраните те группы, которые не являются.
aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
from itertools import groupby
res = [''.join(g) for k, g in groupby(aa[0], key=separator.__contains__) if not k]
# res: ['prinec', 'how', 'are', 'you', 'smile', 'isfine1']
Как я понимаю, ваш подход заключается в том, что вы хотите итеративно разделить строки в списке по различным разделителям и добавить их части обратно в список. Таким образом, aa
также имеет смысл быть списком, изначально содержащим одну строку. Вы могли бы сделать это намного проще с пониманием списка, заменив aa
новым списком, содержащим слова из предыдущего aa
, разделенного на следующий разделитель:
aa = ['prinec-how,are_you&&smile#isfine1']
separator = ["-",",","_","&","#"]
for s in separator:
aa = [x for a in aa for x in a.split(s) if x]
# aa: ['prinec', 'how', 'are', 'you', 'smile', 'isfine1']