El 17 de enero de 2013 10:46, Carlos Agulló Calvo <cm.agu...@gmail.com>escribió:
> hola > > Hace ya tiempo pregunté varias dudas sobre el tratamiento de datos que > están en un .txt desde entonces, he conseguido varios progresos, pero ahora > me he quedado estancado en un punto del que no se salir. > > Mi duda consiste en lo siguiente: > > tengo los datos de la siguiente manera: > > "0303201";1/4/2009 > 0:01:00;2;0;0;0;0;117;44;163;2;0;0;0;-127;2;-127;-127;-127;-127;0 > "0303201";1/4/2009 > 0:02:00;2;1;0;0;0;104;92;255;1;0;1;1;-127;1;-127;-127;-127;-127;0 > (Es un extracto) > > y querría poder compararlos entre las filas para aplicar una serie de > filtros y en función de si cumplen o no los filtros que vayan a archivos > separados. > > He pensado que debería hacer que cada fila fuera una lista y por eso he > hecho este programa: > > leer=open("datos.txt","r") > lista=open("datos_lista.txt","a") > validos=open("est_0303201_VAL.txt","a") > no_validos=open("est_0303201_ERR.txt","a") > > for i in leer.readlines(): #con esto lee cada línea > datos=i.strip().split(";") #guarda cada linea como una lista > lista.write(str(datos)+"\n") #escribe en VALIDOS (datos_lista.txt) > las lineas como listas [,] > > > > leer.close() > validos.close() > > que me crea 2 archivos vacíos y uno con los datos en forma de listas así: > > ['"0303201"', '1/4/2005 0:01:00', *'2', '0'*, '0', '0', '0', '143', > '-127', '-127', '2', '0', '0', '0', '-127', '2', '-127', '-127', '-127', > '-127', '0'] > ['"0303201"', '1/4/2005 0:02:00', *'0', '100'*, '0', '0', '0', '106', > '-127', '-127', '1', '0', '1', '1', '-127', '1', '-127', '-127', '-127', > '-127', '0'] > (es un extracto) > > El problema es que no sé cómo poner los filtros. > > Por ejemplo, quiero que si la columna en negrita 1 es cero y la columna > en negrita 2 es 100 se considere error. > > o que en el siguiente ejemplo: > > ['"0303201"', '1/4/2005 0:01:00', '2', '0', '0', '0', '0', *'143'*, > '-127', '-127', '2', '0', '0', '0', '-127', '2', '-127', '-127', '-127', > '-127', '0'] > ['"0303201"', '1/4/2005 0:02:00', '0', '100', '0', '0', '0', *'106'*, > '-127', '-127', '1', '0', '1', '1', '-127', '1', '-127', '-127', '-127', > '-127', '0'] > (es un extracto) > > si en la fila 2 la columna en negrita es menor que en la fila 1 también de > error. > > (luego pondría yo que me diga el filtro que no cumple, pero eso creo que > lo sé hacer). > > ¿Podríais ayudarme? > > Muchas gracias > > > Aprovecha el for para aplicar tus filtros directamente ahí a medida que vas leyendo. Mete un par de ifs para tratar si es el principio o fin del fichero para comparar con el dato anterior (en fecha). ¿Te has planteado usar numpy para esto o no es posible y debes usar python puro? Numpy te podría facilitar mucho las cosas y librarte de algún for que te ralentice el programa.
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/