En de terminados casos nos encontramos con el problema de buscar una cierta cadena de texto o números que son precedidos o antecedidos por ciertos caracteres en una linea o texto, o simplemente reordenar los datos como lo es por ejemplo tomar la fecha.
tenemos la siguiente cadena en la linea de ejemplo
cadenafecha="hoy es 28 de febrero de 2013"
y nosotros queremos obtener el dia 28 febrero y 2013
para ello generamos un patrón
meses="enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre"
patron= "hoy es (\d{1,2}) de ("+meses+") de (\d{4})"
Con esto, lo que esté dentro de los paréntesis sera el objetivo:
\d porque es un número
{1,2} el tamaño de ese número entre 1 y 2 dígitos
("+meses+") Cualquiera de los meses
y nuevamente un número, esta vez exclusivamente de 4 dígitos
ahora ejecutamos la búsqueda
busqueda=re.search(patron, cadenafecha)
fecha=busqueda.groups()[2]+"-"+busqueda.groups()[1]+"-"+busqueda.groups()[0]
Esto nos imprimira:
2013-febrero-28
re.search nos arroja un arreglo con los 3 objetivos (los () ), por lo que podemos ubicarlos y asignarlos según el orden en que fueron llamados, dándo el número del objetivo que deseemos usar( a partir del 0)
busqueda.groups()[2]
en este caso 2013 que corresponde al último objetivo.
Para más objetivos y casos particulares
visten ésta página o dejen un comentario
saludos