Estoy buscando una manera rápida y posiblemente conveniente en Python 3 para traducir cadenas con letras que no sean ascii a palabras con solo letras ascii.Traducir letras no en 7 bits ASCII a ASCII (como ñ a n y ± aa)
¡Ejemplos!
Żółw => Żółw
móżdżek => mozdzek
łódź => Lodz
y así sucesivamente ...
Hay muchas cartas en alfabetos nacionales que se pueden convertir en Letras ASCII (como ń a n). Puedo hacerlo manualmente para mi idioma (polaco), especificando cómo traducir cada letra. ¿Pero hay alguna forma automatizada para hacer eso? ¿O alguna biblioteca que haría lo que necesito?
pitones str.encode()
no va a hacer, porque "żółw".encode('ascii', 'replace') == "???w"
y "żółw".encode('ascii', 'ignore') == "w"
...
que pueda hacer dicha traducción para las letras polacas, pero no quiero que lo haga por cualquier otro idioma:
>>> utf8_letters = ['ą','ę','ć','ź','ż','ó','ł','ń','ś']
>>> ascii_letters = ['a','e','c','z','z','o','l','n','s']
>>> trans_dict = dict(zip(utf8_letters,ascii_letters))
>>> turtle = "żółw"
>>> out = []
>>> for l in turtle:
... out.append(trans_dict[l] if l in trans_dict else l)
>>> result = ''.join(out)
>>> result
'zolw'
El código anterior hace lo que yo quiero con letras polacas, pero es feo: < ¿Cuál es la mejor manera de hacerlo?
Por supuesto, tales traducciones cambiarán el significado de algunas palabras, pero eso está bien.
Tenga en cuenta que en algunos idiomas, lo que algunos considerarían una letra acentuada se considera una letra distinta en ese idioma. Por ejemplo, la letra 'å' en sueco generalmente se considera una letra distinta de 'a', y no simplemente la letra 'a' con un anillo encima de ella. – dreamlax
Soy consciente de eso ... El punto es que cuando escribo en polaco en algún lugar, donde mis letras nacionales no son compatibles, uso estas "traducciones" sobre las que escribí. Creo que las personas de otros países tienen sus propias formas de escribir en esos entornos. Me gustaría saber cómo se pueden hacer tales transformaciones. – Maciek
@ John Saunders, gracias por hacer que mi respuesta sea completamente inválida. –