Delete digits in Python (Regex)

Tags: , ,



I am trying to delete all digits from a string. However, the next code deletes as well digits contained in any word. Obviously, I don’t want that. I have been trying many regular expressions with no success.

Thanks!


s = "This must not be deleted, but the number at the end yes 134411"
s = re.sub("d+", "", s)
print s

Result:

This must not b deleted, but the number at the end yes

Answer

Add a space before the d+.

>>> s = "This must not b3 delet3d, but the number at the end yes 134411"
>>> s = re.sub(" d+", " ", s)
>>> s
'This must not b3 delet3d, but the number at the end yes '

Edit: After looking at the comments, I decided to form a more complete answer. I think this accounts for all the cases.

s = re.sub("^d+s|sd+s|sd+$", " ", s)


Source: stackoverflow