สิ่งนี้จะใช้ได้กับสถานการณ์ของคุณหรือไม่?
>>> 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)