Điều này có phù hợp với hoàn cảnh của bạn không?
>>> s = '12abcd405'
>>> result = ''.join([i for i in s if not i.isdigit()])
>>> result
'abcd'
Điều này sử dụng khả năng hiểu danh sách và những gì đang xảy ra ở đây tương tự như cấu trúc này:
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)
Như @AshwiniChaudhary và @KirkStrauser đã chỉ ra, bạn thực sự không cần sử dụng dấu ngoặc trong một chữ lót, làm cho phần bên trong dấu ngoặc đơn trở thành biểu thức trình tạo (hiệu quả hơn so với việc hiểu danh sách). Ngay cả khi điều này không phù hợp với các yêu cầu cho bài tập của bạn, thì đó là điều cuối cùng bạn nên đọc :):
>>> s = '12abcd405'
>>> result = ''.join(i for i in s if not i.isdigit())
>>> result
'abcd'
re
:result = re.sub(r'[0-9]+', '', s)