Expresiones Regulares , ficheros, Python y problemas

Jordi Llonch llonchj en atcubic.com
Vie Feb 15 16:25:04 CET 2008


Aplicar correctamente las expresiones regulares puede resultar complejo.
Prueba con este código:

import re

reoptions = re.MULTILINE
expr_buffer = "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\ 
\] " + \
     "\"(.+?)\" (\\d{3}) (\\d+) \"([^\"]+)\" \"([^\"]+)\""
expr = re.compile(expr_buffer, reoptions)

def processline(buffer):
     r = expr.findall(buffer.strip())
     for item in r:
         ip, user, passwd, date, url, result, bytes, referer, agent =  
item
         #Aqui te quedan las variables parseadas

processline(open("access_log").read())


Saludos,
Jordi





El 15/02/2008, a las 16:08, inf200468 en ucf.edu.cu escribió:

>
>
>
>
>
> Hola:
> ??????????? tengo un
> fichero log , donde sus lineas
> son algo como:
>
>
> 10.14.17.12 - - [06/Feb/2008:07:35:19 -0500] "GET
> /src/webmail.php
> HTTP/1.1" 200 335 "http://correo/src/login.php"
> "Mozilla/4.0
> (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)"
>
>
> 10.14.17.12 - - [06/Feb/2008:07:35:19 -0500] "GET /src/left_main.php
>
> HTTP/1.1" 200 3041 "http://correo/src/webmail.php"
> "Mozilla/4.0
> (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 2.0.50727)"
>
>
> esa son dos lineas que pongo de ejemplo, claro como aqui no caben se  
> llevan
> 2 o 3.
> La cuestion es que necesito extraer de ellas la ip que aparece y la  
> fecha ,
> entre
> otras cosas, para esto utilizo el modulo re, hice lo sgte:
>
> patron_IP =
> re.compile('[10-256]..[0-255]..[0-255]..[0-255]')
> iterator =
> patron_IP.finditer
> (linea)
> for result in iterator:
> ??? print
> linea[result.start():result.end()]
>
> pero nunca me devuelve la ip completa
> solo
> 10.14.17.1 y el 2 no lo da, es decir el ultimo numero, para la fecha  
> escribi:
>
>
> patron_FECHA = re.compile('[00-31]./.*./.*.:[00-60]')
> i =
> patron_FECHA.finditer
> (linea)
> for result in i:
> ????print
> linea[result.start():result.end()]
>
> y a veces lo devuelve correctamente y
>
> otras no , quisiera saber pq , estoy casi seguro que es un error con  
> las er, es mi
>
> primera vez utilizando e.r si me pueden sugerir algo mejor vale ok.
> Disculpen por
> el largo del correo?
> Gracias
>
>
>
>
>
> ------------------------------
> Participe en Universidad 2008
> 11 al 15 de febrero del 2008
> Palacio de las Convenciones,
> Ciudad de la Habana, Cuba
> http://www.universidad2008.cu
> <untitled-2.txt>_______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes

_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es