/ / Usando .translate () en una cadena para eliminar los dígitos [Python 3] - python, string, python-3.x

Uso de .translate () en una cadena para eliminar los dígitos [Python 3] - python, string, python-3.x

Digamos que tengo la cadena "2okjser823ab". ¿Cómo puedo eliminar todos los números de la cadena usando .translate ()?

Veo que en Python 2.x puedes hacer algo como .translate (Ninguno, "0123456789") pero si intento esto en Python 3, me dice que el método solo toma un argumento.

Respuestas

2 para la respuesta № 1

Parece que es un poco más difícil en Python 3; no estoy seguro de por qué.

Esto es lo que puedes hacer:

>>> import string
>>> translation = str.maketrans(string.ascii_letters, string.ascii_letters, string.digits)
>>> "2okjser823ab".translate(translation)
"okjserab"

Es posible que necesite expandir string.ascii_letters con cualquier otra cosa que espere como entrada (string.ascii_letters + string.punctuation + string.whitespace, por ejemplo).

Edit: No puedo encontrarlo claramente en la documentación de str.maketrans, pero si usa una cadena vacía para los primeros dos argumentos, todo se asignará de 1 a 1, pero la parte de eliminación (el tercer argumento) todavía ocurre:

>>> translation = str.maketrans("", "", string.digits)
>>> "2eeŷýéeokjser823 ab.;t".translate(translation)
"eeŷýéeokjser ab.;t"

-1 para la respuesta № 2

Usted puede utilizar el strip función:

strings="tycoon0123456789999"
strings.strip("0123456789")