Чи вдасться це зробити для вашої ситуації?
>>> s = '12abcd405'
>>> result = ''.join([i for i in s if not i.isdigit()])
>>> result
'abcd'
Це використовує розуміння списку, і те, що тут відбувається, схоже на цю структуру:
no_digits = []
# Iterate through the string, adding non-numbers to the no_digits list
for i in s:
if not i.isdigit():
no_digits.append(i)
# Now join all elements of the list with '',
# which puts all of the characters together.
result = ''.join(no_digits)
Як зазначають @AshwiniChaudhary та @KirkStrauser, вам фактично не потрібно використовувати дужки в одноклапці, роблячи фрагмент всередині дужок генераторним виразом (більш ефективним, ніж розуміння списку). Навіть якщо це не відповідає вимогам для вашого завдання, це з часом слід прочитати про нього:
>>> s = '12abcd405'
>>> result = ''.join(i for i in s if not i.isdigit())
>>> result
'abcd'
re:result = re.sub(r'[0-9]+', '', s)