Eliminar todos los caracteres no numéricos de la cadena en Python

Resuelto grizzley asked hace 15 años • 9 respuestas

¿Cómo eliminamos todos los caracteres no numéricos de una cadena en Python?

grizzley avatar Aug 09 '09 00:08 grizzley
Aceptado
>>> import re
>>> re.sub("[^0-9]", "", "sdkjh987978asd098as0980a98sd")
'987978098098098'
Ned Batchelder avatar Aug 08 '2009 17:08 Ned Batchelder

No estoy seguro si esta es la forma más eficiente, pero:

>>> ''.join(c for c in "abc123def456" if c.isdigit())
'123456'

La ''.joinparte 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.

Mark Rushakoff avatar Aug 08 '2009 17:08 Mark Rushakoff

@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'
kennyut avatar Nov 09 '2018 15:11 kennyut