Hola,

El 05/06/2014, a las 14:42, Jose M.Allegue <[email protected]> escribió:

> Buenas tardes.
> 
> Estoy intentando manejar un archivo de datos pero no se como hacerlo.
> Se trata de un archivo de texto (.txt) con información en lineas.
> 
> Parte de el es como sigue:
> 
> 
>       Deployment Time: 26/04/2014 1:50:00
>       Transit Speed (knots): 120,00
>       Range (NM): 0,00
>       Total Endurance: 2 hrs 0 mins
>       Distance to Search Area (NM): 62,076
>       Time to reach Search Area: 31 mins
>       Search Speed (knots): 120,00
>       On-Scene Endurance: 49 mins
>       SRU Coverage Area (NM):83,893
>       Track Spacing (NM): 1,00
>       Pattern Type: Parallel 
>       Leg Length (NM): 10,9847
>       Angle: 90,00
>       First Turn: Right
>       Commence Search Course: 0,00
>       Probability of Detection (POD): 100,00 %
>       Probability of Containment (POC): 100,00 %
>       Probability of Success (POS): 100,00 %
> 
>       
>       xxx Coverage Area (NM):83,893
>       E  37 3.49 N,  1 13.65 W
>       F  37 15.47 N,  1 13.65 W (11,9847 NM)
>       G  37 15.47 N,  1 4.87 W (6,9907 NM)
>       H  37 3.49 N,  1 4.87 W (11,9847 NM)
> 
> las lineas E F G H son posiciones que tengo que tratar, de manera que ahora 
> son string pero las tengo que pasar a int o float, para realizar ciertas 
> operaciones con ellas Eso ya lo tengo resuelto, pero la pregunta es;
> ¿ lo trato como una lista o como un string completo ? ¿ quizás como un csv ?

Por lo que veo tienes 4 puntos delimitando un área de búsqueda de unas 84 
millas náuticas cuadradas al sur de Cartagena :)

> 
> Como abordar este problema ?

Creo que este caso se presta a usar expresiones regulares.
Suponiendo que has abierto el fichero para lectura con nombre f se puede hacer 
algo así:

for line in f.readlines():
    alt = re.findall("(?<= )(\d{1,2}) (\d{1,2}\.\d{1,2}) ([NS]),\s+(\d{1,2}) 
(\d{1,2}\.\d{1,2}) ([EW]).*", line)
    if len(alt) != 0:
        lat = float(alt[0][0])+float(alt[0][1])/60.
        if alt[0][2] == 'S':
            lat *= -1
        lon = float(alt[0][3])+float(alt[0][4])/60.
        if alt[0][5] == 'W':
            lon *= -1
        print lat, lon

Puedes ir añadiendo las coordenadas a una lista para después trabajar con ellas.

Un saludo.

> 
> Gracias
> -- 
> jose m allegue
> 
> [email protected]
> 
> _______________________________________________
> Python-es mailing list
> [email protected]
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a