DSP BRDMFRINFO:CN=0,SRN=80,SN=0;
CDLAGATAZOW08
+++ CDLAGATAZOW08 2015-02-06 09:58:08
O&M #356423
%%/*36154325*/DSP BRDMFRINFO:CN=0,SRN=80,SN=0;%%
RETCODE = 0 Operation succeeded.
Display Board Manufacturing Information
---------------------------------------
Type = WD5MJRUCC50
Serial Number = 210231964410C3000394
Description = DBS3900,WD5MJRUCC50,MRRU V2,Multi-mode Multi-carries Remote Radio Unit(TX869-894MHz/RX824-849MHz,-48VDC,2.5G)
Date of Manufacture = 2012-03-19
Vendor = Huawei
Issue Number = 00
(Number of results = 1)
--- ENDDSP BRDMFRINFO:CN=0,SRN=80,SN=0;
Y de cada regisstro debe quedar una linea asi:CDLAGATAZOW08
+++ CDLAGATAZOW08 2015-02-06 09:58:08
O&M #356423
%%/*36154325*/DSP BRDMFRINFO:CN=0,SRN=80,SN=0;%%
RETCODE = 0 Operation succeeded.
Display Board Manufacturing Information
---------------------------------------
Type = WD5MJRUCC50
Serial Number = 210231964410C3000394
Description = DBS3900,WD5MJRUCC50,MRRU V2,Multi-mode Multi-carries Remote Radio Unit(TX869-894MHz/RX824-849MHz,-48VDC,2.5G)
Date of Manufacture = 2012-03-19
Vendor = Huawei
Issue Number = 00
(Number of results = 1)
--- ENDDSP BRDMFRINFO:CN=0,SRN=80,SN=0;
CDLAGATAZOW08, WD5MJRUCC50
Como decirle a Python que extraiga lo que está despues de "+++" y lo que está despues de "Type"?Bueno con una expresion regular basta, pero el problema es que se encuentran en diferentes líneas.
Lo resolví utilizando un "flag" que se encendiera cuando encontrara el "+++" en una linea, y que se apagara cuando encontrara "ENDDSP"
Mientras el flag estuviera "on" grabaría el contenido de la linea en una lista. Luego busco los patrones de texto y los escribo en otro archivo. Aqui el codigo:
import re
inFile = open("d:/byron/type.txt")
outFile = open("d:/byron/typeResponse.txt", "w")
siteList = []
#un listado con los nombres de los sitios
for line in inFile:
match = re.search(r'^\+{3}\s{4}\w+W08', line)
if match:
siteName = match.group()[7:]
siteList.append(siteName)
inFile.close()
#convierte la lista a set para evitar duplicados
siteList = set(siteList)
#crea listas con los nombres de los sitios y agrega las lineas ente +++ y ---
for site in siteList: #toma cada nombre de sitios
inFile = open("d:/byron/type.txt")
flag = "off"
sList = [] # crea una lista con los datos del sitio
for line in inFile: #lo busca en cada linea del archivo
if ("+++" in line) and (site in line): #si encuentra el comando enviado al sitio
#print "Flag on " + line
flag = "on" #enciende la grabacion
if "ENDDSP" in line:
flag = "off" #apaga la grabacion
#print "flag off " + line
#deja grabar las lineas
if flag == "on":
sList.append(line)
for element in sList: #toma cada dato grabado del sitio
if "Type" in element:
match = re.search(r'=\s\s.+', element)
if match:
print site +", "+ match.group()[3:] + "\n"
outFile.write(site +", "+ match.group()[3:] + "\n")
#una vez llenada la lista de datos del sitio
#busca si existe BoardType
inFile.close()
outFile.close()
inFile = open("d:/byron/type.txt")
outFile = open("d:/byron/typeResponse.txt", "w")
siteList = []
#un listado con los nombres de los sitios
for line in inFile:
match = re.search(r'^\+{3}\s{4}\w+W08', line)
if match:
siteName = match.group()[7:]
siteList.append(siteName)
inFile.close()
#convierte la lista a set para evitar duplicados
siteList = set(siteList)
#crea listas con los nombres de los sitios y agrega las lineas ente +++ y ---
for site in siteList: #toma cada nombre de sitios
inFile = open("d:/byron/type.txt")
flag = "off"
sList = [] # crea una lista con los datos del sitio
for line in inFile: #lo busca en cada linea del archivo
if ("+++" in line) and (site in line): #si encuentra el comando enviado al sitio
#print "Flag on " + line
flag = "on" #enciende la grabacion
if "ENDDSP" in line:
flag = "off" #apaga la grabacion
#print "flag off " + line
#deja grabar las lineas
if flag == "on":
sList.append(line)
for element in sList: #toma cada dato grabado del sitio
if "Type" in element:
match = re.search(r'=\s\s.+', element)
if match:
print site +", "+ match.group()[3:] + "\n"
outFile.write(site +", "+ match.group()[3:] + "\n")
#una vez llenada la lista de datos del sitio
#busca si existe BoardType
inFile.close()
outFile.close()
No hay comentarios:
Publicar un comentario