[Python-es] Tratamiento de datos.

Sherab Giovannini shaddycls en gmail.com
Vie Jun 6 09:54:24 CEST 2014


Si conoces el contenido y siguiendo un poco los ejemplos que te han dado
supongo que esto sería suficiente:

re.findall("Track[\S ]+", contenido)
['Track Spacing (NM): 1,00']

Otra variante, podría ser utilizar un filtro, siendo contenido el texto:

filter(lambda linea: linea.startswith("Track"), contenido.splitlines())
['Track Spacing (NM): 1,00']

Ya que ambos devuelven una lista, tendrías que acceder al contenido
(lista[0]) y luego procesar la cadena. Para procesarla puedes usar otra
expresión regular o hacerlo directamente.

linea = 'Track Spacing (NM): 1,00'
match = re.search('[\d,.]+', linea)
if match:
  print match.group()
'1,00'

O una opción un poco más de estar por casa:

print linea.split(": ")[1]

Pero en fin, no soy un experto así que seguramente aquí te den soluciones
mucho más efectivas/elegantes.

Un saludo!




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.
>
> 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/
>
>


-- 
HomePage <http://www.reversingcode.com> @ Research Labs
<http://research.reversingcode.com>

[AbsshA's Blog <http://abssha.reversingcode.com>]

[PGP Public Key
<http://www.reversingcode.com/D5D674CE7060012E0C5EE7B15C5B66768B8D4045.asc>]
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140606/8065ddd1/attachment.html>


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