domingo, 8 de febrero de 2015

Cadenas de texto Unicode - I

Desde la versión 2.0 de Python, se encuentra disponible un nuevo tipo de datos para que los programadores almacenen texto: el objeto Unicode. 
Puede ser usado para almacenar y manipular datos Unicode (ver http://www.unicode.org/) y se integran bien con los objetos existentes para cadenas de texto, mediante auto-conversión cuando es necesario. Unicode tiene la ventaja de tener un número ordinal para cada carácter usado tanto en textos modernos como antiguos. Previamente, había sólo 256 ordinales posibles para los caracteres en scripts. 
Los textos eran típicamente asociados a un código que relaciona los ordinales a caracteres en scripts. Esto lleva a mucha confusión, especialmente al internacionalizar software. Unicode resuelve estos problemas definiendo una sola codificación para todos los scripts. 
Crear cadenas Unicode en Python es tan simple como crear cadenas de texto normales:

>>> u'Hola Mundo!'
u'Hola Mundo!'


La 'u' al frente de la comilla indica que se espera una cadena Unicode. Si querés incluir caracteres especiales en la cadena, podés hacerlo usando una forma de escapar caracteres Unicode provista por Python. El siguiente ejemplo muestra cómo:
>>> u'Hola\u0020Mundo!'
u'Hola Mundo!'

La secuencia de escape \u0020 indica que se debe insertar el carácter Unicode con valor ordinal 0x0020 (el espacio en blanco) en la posición dada. Otros caracteres son interpretados usando su respectivo valor ordinal como ordinales Unicode. Si tenés cadenas de texto literales en la codificación estándar Latin-1 que es muy usada en países occidentales, encontrarás conveniente que los primeros 256 caracteres de Unicode son los mismos primeros 256 caracteres de Latin-1. También existe un modo crudo para expertos, del mismo modo que con las cadenas de texto normales. 
Debés anteponer 'ur' a la comilla inicial para que Python use el modo de escape crudo de Unicode. Solo se aplicará la conversión \uXXXX si hay un número impar de barras invertidas frente a la 'u'.

>>> ur'Hola\u0020Mundo!'
u'Hola Mundo!'
>>> ur'Hola\\u0020Mundo!'
u'Hola\\\\u0020Mundo!'

El modo crudo es útil principalmente cuando tenés que insertar muchas barras invertidas, como puede suceder al trabajar con expresiones regulares. Además de estas codificaciones estándar, Python provee muchas más formas de crear cadenas de texto Unicode en las bases de codificaciones conocidas.

No hay comentarios:

Publicar un comentario