Foros del Web » Programando para Internet » Python »

Ayuda con archivo de texto en Python

Estas en el tema de Ayuda con archivo de texto en Python en el foro de Python en Foros del Web. Hola amigos tengo un fichero de texto de la siguiente forma y quisiera hacer algunas operaciones con el en python. El fichero tiene la siguiente ...
  #1 (permalink)  
Antiguo 06/10/2009, 07:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Ayuda con archivo de texto en Python

Hola amigos tengo un fichero de texto de la siguiente forma y quisiera hacer algunas operaciones con el en python. El fichero tiene la siguiente estructura:

$MEAS_TIM:
0 0
$DATE_MEA:
09-30-2009 00:00:00
$PEAKS:
4
6 1 .277 0. 0. 1.81
19 1 3.313 2926. 105. .61
20 1 3.691 10893. 123. 1.57
22 1 4.509 5753. 90. 1.40
$COH_SCAT:
1
47 1 22.102 703413. 1336. 6.17
$INC_SCAT:
1
47 1 21.187 1240893. 17591. 1.76

el número debajo de $PEAKS:, en este caso 4 sería el control del ciclo que dice la cantidad de elementos, la operación sería dividir cada elemento de la 4ta columna(que aparece con el elemento en ROJO) entre el numero que aparece en verde y la salida sería:

valor de la columna 1-valor de la división

Por Favor agradezco la colaboración de todos.
  #2 (permalink)  
Antiguo 06/10/2009, 09:22
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con archivo de texto en Python

Si el archivo no es muy grande, se puede procesar fácilmente con un for (si es grande también se puede procesar, pero quizás valga la pena buscar otras formas además de la que voy a sugerirte)
No hay control de errores y probablemente se pueda mejorar mucho, pero en principio es la idea que se me ocurre:

Código python:
Ver original
  1. archivo = open("tuarchivo")
  2. lista_datos = []
  3.  
  4. # leo hasta que encuentro $PEAKS
  5. while not archivo.readline().startswith("$PEAKS:"):
  6.     pass
  7.  
  8. # la siguiente línea es la que tiene el "control de ciclo"
  9. num_lineas = int( archivo.readline() )
  10.  
  11. # ahora leo las siguientes num_lineas líneas del archivo
  12. for i in xrange(0, num_lineas):
  13.     datos = archivo.readline().split(" ")
  14.     lista_datos.append( (datos[0], datos[3]) )
  15.  
  16. # por último, leer la última línea
  17. for linea in archivo:
  18.     pass
  19.  
  20. # obtengo el tercer campo de la línea
  21. divisor = linea.split(" ")[3]
  22.  
  23.  
  24. # genero la salida:
  25. for (col1, valor) in lista_datos:
  26.     print "%s, %s" % col1, (valor / divisor)

Sobre tu archivo de ejemplo, la salida que me da este programa es
Código:
6 - 0.0
19 - 0.00235797929394
20 - 0.00877835558747
22 - 0.00463617733358

Saludos.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:46.