¿Cómo extraer el texto de un parámetro de una línea de un log? – python

Pregunta:


¿Alguien sabe cómo es posible extraer el texto que se encuentre luego de varios espacios en blanco en una línea de log?

Busco extraer el elemento que se encuentra posterior a la hora, en la cuarta posición. Este elemento, hay veces que lo recibo en formato IP (123.123.123.123) y otras veces en formato de texto (abc) ya que llega el nombre del hostname.

Ejemplos de la entrada y la salida esperada:

 Input: <2>Mar 13 21:34:09 12.11.18.67 1,2017/08/08 21:34:09,62701006152,lunes,
 Output: 12.11.18.67

 Input: <2>Mar 13 21:34:09 local.prueba 1,2017/08/08 21:34:09,62701006152,lunes,
 Output: local.prueba

Mi intento fue capturar la IP usando regex:

d{1,3}.d{1,3}.d{1,3}.d{1,3}

Pero eso no me vale para los casos que la IP llegue con el nombre del host.

Preguntado por: xav

Respuesta Randall Sandoval:

Buenos días, lo que debes hacer es cortar el String, con la función split() que le puedes aplicar al String.

La función split(), así sin ningún argumento, cortará cada vez que encuentre un espacio.

Yo hice una corrida con tus textos en la página repl.it, y como se puede ver la en imagen, lo que se nos devuelve es un arreglo con strings, en donde en los dos casos, el cuarto elemento es el dominio o la ip, según corresponda.

introducir la descripción de la imagen aquí

Te dejo documentación (En Inglés) en donde va incluido este método.

Por tanto, la siguiente línea de código bastaría para poder obtener la información que deseas.

'<2>Mar 13 21:34:09 12.11.18.67 1,2017/08/08 21:34:09,62701006152,lunes,'.split()[3]

'<2>Mar 13 21:34:09 local.prueba 1,2017/08/08 21:34:09,62701006152,lunes,'.split()[3]

introducir la descripción de la imagen aquí

Nota: Esta respuesta es para la pregunta original “¿Cómo con regex extraer el texto luego de ciertos espacios en blanco de un parámetro de una línea de un log?” que ha sido manipulada para adaptarse a una respuesta diferente.

En Python:

import re
p = re.compile('^Input:s+[^s]+s[^s]+s[^s]+s([^s]+).*$')
m=p.match("Input: <2>Mar 13 21:34:09 12.11.18.67 1,2017/08/08 21:34:09,62701006152,lunes,")
print m.group(1)
m=p.match("Input: <2>Mar 13 21:34:09 local.prueba 1,2017/08/08 21:34:09,62701006152,lunes")
print m.group(1)

Esto lo puedes probar en Notepad++ y despues traducirlo a regex de Java o al lenguaje que estés usando. ^Input:s+[^s]+s[^s]+s[^s]+s([^s]+).*$

La expresión en paréntesis se puede extraer o usar como sustituto en la linea original.

Dialogo en Notepad++

Fuente

Related Posts:

Con Django ‘str’ object is not callable en class based-views – python django
Pregunta: Tengo este problema cuando quiero acceder a una URL que me dice que es str object is no callable seguramente tengo algo mal en ...
Abrir páginas web en python 3.5.X en la misma ventana – python python-3.x webbrowser
Pregunta: Buenas, he hecho un script para lanzar varias páginas web en una sola ventana, es decir, cada url en una pestaña sin embargo, firefox ...
Publicar proyecto en Python 3.5 con heroku – python django python-3.x
Pregunta: Hola tengo un proyecto hecho con Python 3.5 y Django 1.10 y quisiera publicarlo en HEROKU pero veo que solo soporta Python 2.7, ¿alguien ...
Correcto uso de la app admin de django – python django
Pregunta: Cual es el correcto uso que se le debe dar a la página de administración (django.contrib.admin) en una aplicación en producción. explico mi pregunta. El ...
Cambiar un valor string a un entero – python django ajax
Pregunta: Con el siguiente código quiero hacer una validación donde valide si un dato que voy a ingresar es mayor a otro que ya tengo, ...
Como correr Django en python 3.5 – python python-3.x django
Pregunta: estoy trabajando con Django en python 2.7, para eso hago uso de virtualenv, pip, el conector de mysql, etc. Tengo predefinido python 3.5 en ...
Insertar salto de línea escribiendo en un txt (Python) – python tkinter
Pregunta: Como puedo insertar un salto de línea : archi.write(svnombreRP.get()) Lo hago de la siguientes maneras y no me funciona: No funciona archi.write(svnombreRP.get()'/n') No funciona archi.write(svnombreRP.get()/n) No funciona, me imprime la variable ...
Python elemento IN lista de strings – python python-3.x
Pregunta: tengo la siguiente lista y string: lis = palabra = 'ejemplo' Pero cuando hago palabra in lis Me retorna False. ¿A qué ...
Python: Cómo importar una función desde un archivo – python python-3.x
Pregunta: Estoy teniendo problemas para importar una función: def helloworld(): print("Hello World!") La tengo en un archivo llamado ...
Reasignar valores aleatoriamente a una variable, con una distribución de probabilidad – python python-2.7
Pregunta: Supongamos que hemos declarado una serie de variables (V1, V2, V3, V4) y otra serie de variables (probabilidades): V1="A" V2="B" V3="C" V4="D" Prob_V1=0.2 #probabilidad de reasignar "A" a ...
¿Cómo hacer una tabla de distribución de frecuencias con python? – python python-3.x numpy
Pregunta: Estoy trabajando con distribuciones de frecuencias, hice un script sencillo pero muy redundante que me permite obtener la distribución de frecuencias relativa de ciertos ...
.isalpha() con espacios no funciona en Python 3x – python python-3.x
Pregunta: equipos = print (equipos) print (equipos) print (equipos) print (equipos) while True: equipo = input("n¿Con que equipo te gustaria jugar? ...
¿Cómo hacer una división decimal de un número mayor a 10^308 en Python? – python matemáticas
Pregunta: Intento hacer esta división como parte de un algoritmo de cambio de bases numéricas y me da error de desbordamiento. Python ...
¿Cómo puedo llamar una función de python desde javascript en un proyecto de django? – javascript python django
Pregunta: Estoy haciendo un proyecto que requiere hacer calculadoras complejas en python, necesito pasar datos que ingresa el usuario en la pagina web, a los ...
Django urls.py error – python nodejs django
Pregunta: Buenos días, Estoy intentando meter el 'MEDIA_ROOT' en 'urls.py' pero cuando ejecuto el 'runserver' me aparece el siguiente error: File "C:UsersManuxDesktoppd110libsite-packagesdjangoconfurlsstatic.py", line ...
Tags:

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *