Eliminar todos los caracteres no numéricos de la cadena en Python
¿Cómo eliminamos todos los caracteres no numéricos de una cadena en Python?
Aceptado
>>> import re
>>> re.sub("[^0-9]", "", "sdkjh987978asd098as0980a98sd")
'987978098098098'
No estoy seguro si esta es la forma más eficiente, pero:
>>> ''.join(c for c in "abc123def456" if c.isdigit())
'123456'
La ''.join
parte significa combinar todos los personajes resultantes sin ningún personaje intermedio. Luego, el resto es una expresión generadora, donde (como probablemente puedas adivinar) solo tomamos las partes de la cadena que coinciden con la condición isdigit
.
@Ned Batchelder y @newacct proporcionaron la respuesta correcta, pero...
Por si acaso, si tiene coma (,) decimal (.) en su cadena:
import re
re.sub("[^\d\.]", "", "$1,999,888.77")
'1999888.77'