[Python-es] Tratamiento de datos.

Kiko kikocorreoso en gmail.com
Vie Jun 6 10:01:36 CEST 2014


El 6 de junio de 2014, 9:19, Jose M.Allegue <jmallegue en gmail.com> escribió:

> Buenos días.
>
> Ya voy viendo un poco por donde se puede "atacar" el asunto. Gracias por
> todo.
> La pregunta, en realidad que se me plantea ¿ como trato el archivo
> completo? su contenido como str o como lista?
> Quizás esté preguntando un disparate de novato pero voy a intentar
> explicarlo.
> Pretendo "buscar el contenido de una linea determinada y extraer los
> caracteres, pasarlos a float o int y trabajar con ellos. Pero para eso
> necesito conocer cual es el indice de la linea donde está la información
> que quiero procesar.
> ejemplo: quiero buscar la linea que contiene el dato Track Spacing (NM):
>  y extraer el valor 1,00
>     como hago para buscar linea que contenga un valor que comience pro
> Track* y me devuelva el indice de la linea ? a partir de ese índicie ya
> puedo procesar los caracteres.
> Otra cosa es que el archivo tiene una longitud variable, es decir, no
> siempre tiene el mismo número de líneas, por lo que necesito buscar en cada
> momento cual es el índice de la linea de la que quiero extraer la
> información.
>
> Ahora bien, todo esto lo he podido realizar en excel, pero se trata de
> automatizarlo y tener mayor control sobre el proceso.
>
> Por todo esto la pregunta; Lo proceso como una cadena con sus saltos de
> linea, etc o por el contrario lo "meto" todo en una lista y cada linea será
> un elemento de la misma, o "pasandolo" a csv ?
>
> Como dice David, el archivo es un poco 2raro!".... tiene esta "forma" para
> que pueda ser leido por un GIS en particular, es decir, estos datos leen y
> se presentan en pantalla, pero claro desde ese momento no se pueden
> procesar y la idea e tener mas control sobre ellos.
>

Yo leo archivos "raros" todos los días.
Normalmente, si lo puedo resolver sin expresiones regulares lo hago de la
siguiente forma:

Leo línea a línea, cada línea es un string y dentro de ese string busco lo
que necesito:

Para leer todo como un string (es Python 3):
*data = open('kk.txt', 'r').read()*

Para tener cada una de las filas:
*data = data.split('\n')*

De esta forma tengo cada línea como un string en una lista. Ahora puedo
iterar por cada línea (i.e. elemento de la lista) y saber en qué línea está
lo que busco. Lo que busco lo puedo obtener usando 'in' para saber si está
contenido en el elemento/string/línea:
*for i, linea in enumerate(data):*
*    if 'cadena_que_busco' in linea:*
*        # código para hacer lo que necesito, esto lo dejo para tí, aquí
puedes usar una regex, métodos de la clase str,...*

Espero que te clarifique un poco las cosas.


>
> Gracias por vuestra ayuda.
>
>
>
> El 6 de junio de 2014, 6:56, Kiko <kikocorreoso en gmail.com> escribió:
>
>>
>>>>
>>>> > No entiendo esta linea de código:
>>>> > 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)
>>>>
>>>>
>> Además de lo que te ha explicado José, aquí (
>> http://pybonacci.wordpress.com/2013/02/21/regex-mediante-ejemplos/)
>> tienes un mini tutorial en castellano para adentrarte en el mundo de las
>> expresiones regulares. Si está mal escrito pídele explicaciones al autor
>> :-)
>>
>> De todas formas, si es algo sencillo como lo que quieres hacer en tu caso
>> se puede resolver como ha puesto Daπid, resulta más sencillo y legible.
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> jose m allegue
>
> jmallegue en gmail.com
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140606/617f0527/attachment.html>


Más información sobre la lista de distribución Python-es