Hola recupero de datos basado en texto UTF-8 de una fuente externa que contiene caracteres especiales como u"ıöüç"
mientras que yo quiero normalizarlos a Inglés como "ıöüç"
->"iouc"
. ¿Cuál sería la mejor manera de lograr esto?Python y la normalización de caracteres
Respuesta
recomiendo el uso de Unidecode module:
>>> from unidecode import unidecode
>>> unidecode(u'ıöüç')
'iouc'
Nota cómo se alimenta una cadena Unicode y se da salida a una cadena de bytes. La salida está garantizada para ser ASCII.
Nice one +1 http://pypi.python.org/pypi/Unidecode/0.04.1 – soulseekah
import unicodedata
unicodedata.normalize()
Estoy un poco confundido: He intentado imprimir unicodedata.normalize ('NFKD', u "ıöüç") y la salida es de nuevo: ıöüç – Hellnar
Pruebe los otros valores válidos 'NFC', 'NFKC', 'NFD' y 'NFKD'. – soulseekah
Estoy bastante seguro de que esta es una operación diferente a la que busca el asker. Pero sí, esto es normalización Unicode. Lo que está preguntando no suele ser referido como tal. – drxzcl
Todo depende de qué tan lejos desee transitar el resultado. Si desea convertir todo en ASCII (αβγ
a abg
), entonces unidecode
es el camino a seguir.
Si lo que desea es eliminar los acentos de las letras acentuadas, entonces usted podría intentar descomponer la cadena utilizando el formulario de normalización NFKD (esto convierte la letra acentuada á
a una carta normal a
seguido por U+0301 COMBINING ACUTE ACCENT
) y luego desechar los acentos (que pertenecen al Unicode character classMn
- "Marcar, no espaciar").
import unicodedata
def remove_nonspacing_marks(s):
"Decompose the unicode string s and remove non-spacing marks."
return ''.join(c for c in unicodedata.normalize('NFKD', s)
if unicodedata.category(c) != 'Mn')
La forma más sencilla que he encontrado:
unicodedata.normalize('NFKD', s).encode("ascii", "ignore")
- 1. Normalización de caracteres ASCII
- 2. Dependencia funcional y normalización
- 3. Expectativas del usuario y normalización Unicode
- 4. normalización innecesaria
- 5. glob y soporte de caracteres de Python ('[]')
- 6. Función "normalización"
- 7. Tabla Normalización
- 8. columnas de la normalización de Weka
- 9. Normalización MongoDB, clave externa y unión
- 10. Normalización de JavaScript Unicode
- 11. correcta y portátil normalización utf8 nombre
- 12. Escapar caracteres en Python y sqlite
- 13. Normalización de base de datos
- 14. (De) Normalización de dos relaciones
- 15. Normalización en MySQL
- 16. Normalización - 2NF vs 3NF
- 17. Normalización de cadenas con String.ToUpperInvariant()
- 18. ¿Qué hace exactamente la normalización en CSS?
- 19. columnas de base de datos y normalización clave externa
- 20. ¿Cómo se enseña la normalización de la base de datos?
- 21. ¿La normalización de la base de datos sigue siendo necesaria?
- 22. cadenas de Normalización de Saltee() y .Tomar() llama
- 23. Python Ordenar últimos caracteres
- 24. Python - Pyrersing caracteres Unicode
- 25. Python strip() ¿múltiples caracteres?
- 26. Normalización de cadenas de URI posiblemente codificadas en Java
- 27. ¿Cuál es la mejor forma de normalización de Unicode?
- 28. PCA primero o normalización primero?
- 29. Corrección de ortografía para la normalización de datos en Java
- 30. Biblioteca de Java para la normalización de texto
Buscar y reemplazar tal vez, usted tiene que tener un arsenal completo de especial para caracteres normales sin embargo. – soulseekah