¿Cómo eliminar tildes de string en Python?

Python puede ser utilizado para quitar tildes, podemos usar el módulo unicodedata y maketrans (de str).

Usando unicodedata

Una forma es utilizando el modulo unicodedata

In [1]:
import unicodedata

s = 'aepáéŕíóíúÁÉ'
trans_tab = dict.fromkeys(map(ord, u'\u0301\u0308'), None)
s = unicodedata.normalize('NFKC', unicodedata.normalize('NFKD', s).translate(trans_tab))
print(s)
aepaerioiuAE

Usando maketrans de str

También podemos usar la función maketrans de str

In [4]:
s = 'áéí el niño está en el avión'
a,b = 'áéíóúüñÁÉÍÓÚÜÑ','aeiouunAEIOUUN'
trans = str.maketrans(a,b)

print(s)
print(s.translate(trans))
áéí el niño está en el avión
aei el nino esta en el avion

4 comentarios:

  1. Hola, el ejemplo Usando maketrans no funciona, alguien sabe porqué?

    Les agradezco

    ResponderBorrar
    Respuestas
    1. Seguro debe ser la version de python que usas o que no tienes el modulo descargado

      Borrar
  2. Gracias, me funcionó el maketrans pero no el unicode. Usé python 3.8

    ResponderBorrar
  3. Muchísimas gracias, me funciono el maketrans, nose si sirva el unicode porque no quize probarlo debido a que:

    1. Tiene un modulo y eso hace que sea haga dependiente el programa sujeto a las reglas del modulo.
    2. Se ve muchísimo mas complejo que el maketrans y eso lo hace un poco mas obsoleto a la hora de aplicarse.
    3. Aun así cualquier persona puede programar a su gusto ya que hay muchísimas formas de hacer una sola cosa.
    4. Saludos desde Colombia :D

    ResponderBorrar