lunes, 24 de febrero de 2014

PYTHON, UNICODE Y EXPRESIONES REGULARES

Una expresión regular es una forma de describir un conjunto de cadenas de texto. En Python se debe llamar al modulo re para buscar o remplazar patrones de texto. La función que busca todas las coincidencias es re.findall(patrón,texto,marcador). He aquí algunos ejemplos:




import re
print re.findall('reg','expresion regular')
print re.findall('201\d','2008, 2009, 2010, 2011')
print re.findall('\w+','expresion regular')

Salida:

['reg']
['2010', '2011']
['expresion', 'regular']
El patrón '\w+' corresponde a cualquier cantidad de letras sin incluir espacios vacíos. '201\d' corresponde a un número de cuatro cifras que comienza con 201. Más información acerca de expresiones regulares se puede encontrar en los siguientes vínculos:



En inglés es suficiente la codificación ASCII, pero en español para representar la eñe y las tildes es necesario la codificación Unicode. En un archivo Python hay que declarar Unicode al comienzo de la siguiente forma:

# -*- coding: UTF-8 -*-
En el siguiente ejemplo todavía no se reconoce la ó como una letra válida:
# -*- coding: UTF-8 -*-
import re
print re.findall('\w+','expresión regular')


Salida:

['expresi', 'n', 'regular']

De modo que especificamos el marcador (flag) re.UNICODE para que se tengan en cuenta los caracteres Unicode:

# -*- coding: UTF-8 -*-
import re
print re.findall('\w+','expresión regular',re.UNICODE)


Salida:

['expresi\xc3\xb3n', 'regular']
La ó aparece con su código Unicode, pero aparece normalmente con la función print:

lista = re.findall('\w+','expresión regular',re.UNICODE)
print lista
for item in lista:
    print item


Salida:

['expresi\xc3\xb3n', 'regular']
expresión
regular

No hay comentarios.:

Publicar un comentario