Foros del Web » Programando para Internet » Python »

Mostrar Campos Filtrados

Estas en el tema de Mostrar Campos Filtrados en el foro de Python en Foros del Web. Es mi primer Post en esta Web y la verdad que he estado mirando varios sitios sobre todo de Python y creo que este es ...
  #1 (permalink)  
Antiguo 27/04/2012, 05:44
 
Fecha de Ingreso: abril-2012
Ubicación: Palma de Mallorca
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Mostrar Campos Filtrados

Es mi primer Post en esta Web y la verdad que he estado mirando varios sitios sobre todo de Python y creo que este es el mas completo de todos.

Asi que espero aprender y luego aportar.

Python es nuevo para mi, pero ya estoy leyendo bastante.

Mi pregunta es:
Tengo un fichero creado que me muestra unos resultados (varias lineas) sobre los estados de unos servidores. Ejemplo:

SERVIDOR_NOMBRE : NOMBRE DEL SERVIDOR
ESTADO_DEL_SERVIDOR: ESTADO OK
NUMERO : 12349235402984
FECHA: 27 ABRIL 2012

Luego por medio de un programa que uso debo filtrarlo en python (script) . ( Por ejemplo debo hacer que me recorra todo el contenido y solo me muestre :

SERVIDOR_NOMBRE : NOMBRE DEL SERVIDOR
ESTADO_DEL_SERVIDOR: ESTADO OK

Yo de momento llevo esto y aun no va,

'''
Created on 27/04/2012

@author: XXXXXXX
'''
import unicodedata
import string

umbral = 2
sincronizado = False
configurados = 0
#data = open("status.exp", "r").read()
fscok = open ('status.exp')
ILOM = fscok
for STATUS in output.splitlines():
SERVIDOR_NOMBRE,ESTADO_DEL_SERVIDOR = STATUS.split('')
if linea=[' SERVIDOR_NOMBRE= NOMBRE DEL SERVIDOR']
print('linea')
if linea1=['ESTADO_DEL_SERVIDOR = Estado OK']
print('linea1')


agradeceria que me guiaran un poco gracias
  #2 (permalink)  
Antiguo 27/04/2012, 08:51
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar Campos Filtrados

Hola, bienvenido :)

Es mucho más fácil de lo que parece.

Primero, lee el archivo línea por línea.
Separa la línea por ":", y obtén la primera parte.
Si esa primera parte es SERVIDOR_NOMBRE o ESTADO_DEL_SERVIDOR, imprimes.

Algo así:

Código Python:
Ver original
  1. for linea in open('archivo'):
  2.     if linea.split(':')[0].strip() in ('SERVIDOR_NOMBRE', 'ESTADO_DEL_SERVIDOR'):
  3.         print linea

El .strip() es para eliminar ese espacio extra que pareces tener antes de : en algunos casos.


Saludos.
  #3 (permalink)  
Antiguo 27/04/2012, 18:38
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Mostrar Campos Filtrados

Código Python:
Ver original
  1. with open("archivo") as f:
  2.     for line in f:
  3.         line = line.strip()
  4.         if line.startswith("SERVIDOR_NOMBRE") or line.startswith("ESTADO_DEL_SERVIDOR"):
  5.             print line
  #4 (permalink)  
Antiguo 30/04/2012, 01:09
 
Fecha de Ingreso: abril-2012
Ubicación: Palma de Mallorca
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Mostrar Campos Filtrados

Gracias AlvaroG, razpeitia!
Ahora lo probare

Saludos
  #5 (permalink)  
Antiguo 01/05/2012, 00:50
 
Fecha de Ingreso: junio-2011
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Mostrar Campos Filtrados

Otra solución son las ya famosas regexp(Expresiones regulares) :
Código Python:
Ver original
  1. import re
  2. var = """SERVIDOR_NOMBRE : NOMBRE DEL SERVIDOR
  3. ESTADO_DEL_SERVIDOR : ESTADO OK
  4. NUMERO : 12349235402984
  5. FECHA : 27 ABRIL 2012"""
  6. for server in re.findall("SERVIDOR_NOMBRE : (.*)",var):
  7.     print server
  8.     for estado in re.findall("ESTADO_DEL_SERVIDOR : (.*)",var):
  9.         print estado

Etiquetas: campos, gui, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:31.