Inturiasgary’s Blog

mayo 12, 2010

Strings Unicode en Python

Filed under: Python — inturiasgary @ 5:00 pm

En Python 2.0 y en sus versiones posteriores un nuevo tipo de dato para almacenar texto esta disponible al programador: el objeto Unicode. Este puede ser usado para almacenar y manipular datos Unicode (referencia http://www.unicode.org/) y se integra bien con los objetos de cadena existentes, siempre que las auto conversiones sean necesarias.
Unicode tiene la ventaja de proporcionarnos un ordinal para cada personaje en cada script utilizado en los textos antiguos y modernos. Anteriormente había solo 256 caracteres ordinales posibles para la secuencia de comandos. Los textos estaban vinculados normalmente a una página de código que asignaba los ordinales a los caracteres. Esto llevó a la confusión muy especialmente con respecto a la internacionalización (normalmente escrito como i18n — ‘i’ + 18 characters + ‘n’) de software. Unicode resuelve estos problemas mediante la definición de una página de códigos para todos los scripts.
La creación de caracteres Unicode en Python e tan simple como la creación normal:

>>> u’Hola Mundo !’
u’Hola Mundo !’

El pequeño ‘u’ en el principio del mensaje indica que una cadena Unicode es creada. Si quisiéramos incluir caracteres especiales en la cadena, podríamos realizarlo usando la codificación Python Unicode-Scape. El siguiente ejemplo nos muestra como:

>>> u’Hola\u0020Mundo !’
u’Hola Mundo !’

La salida de la secuencia \u0020 indica que se inserta un caractér Unicode con el valor ordinal 0x0020 (El caractér espacio) en la posición dada.
Otros caracteres son interpretados usando sus respectivos valores ordinales como ordinales Unicode. Si tienes cadenas literales en la codificación estandard Latin-1 que es usado mayormente en los paises del lado oeste, tu encontraras conveniente que los pocos 256 caracteres de Unicode son los mismos que los 256 caracteres del Latin-1.
Para los expertos, hay también el modo raw. para usarlos se debe colocar al principio ‘ur’ el cual dirá que está haciendo uso de la codificación Raw-Unicode-Escape.
ejemplo:

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

Aparte de estas codificaciones estandard, Python provee un conjunto de formas para la creacion de cadenas Unicode basándonos en codificaciones conocidas.
La función unicode() nos provee acceso a todos los codecs (COdificador y DECodificadores) Unicode. Algunos de esto como ser Latin-1, ASCII, UTF-8, y UTF-16.
Ejemplo:

>>> u”abc”
u’abc’
>>> str(u”abc”)
‘abc’
>>> u”äöü”
u’\xe4\xf6\xfc’
>>> str(u”äöü”)
Traceback (most recent call last):
File “”, line 1, in ?
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-2: ordinal not in range(128)

Anuncios

Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Blog de WordPress.com.

A %d blogueros les gusta esto: