[Python-es] Buscar e insertar en una línea

alito Z alito81 en gmail.com
Jue Ago 25 21:47:30 CEST 2011


Hola Darrid:
La longitud de las columnas afortunadamente no cambia, siempre es la misma.
Intente lo primero que pusiste (newdata=[line+' 1000.0' if len(line)<=27
else line for line in oldata]), sin embargo, no se añade el número 1000.0.
Qué hago?


2011/8/25 Daπid <davidmenhur en gmail.com>

> Añado: si la longitud de las columnas puede variar, ejemplo:
>
> 1 M 0.8 0.905 0.6366
> 2 V 0.57929 0.77 0.2279
> 3 S 0.40724 0.77592 0.16738
> 4 K 0.7477 0.5880 0.09151 7.11
> 5 L 0.319 0.691 0.13393 7.42
> 6 S 0.3374 0.5296 0.13246 7.60
>
> en vez de comprobar la longitud de la línea deberías contar el número
> de columnas, esto es:
>
> if len(line.split(' '))==5
>
> Parte la línea por los espacios y cuenta cuántos cachos te quedan. De
> hecho, es una práctica más segura. A menos que estés *muy* segura de
> que el archivo original está bien formateado y el rendimiento sea
> crítico (esto es un poquito más lento), te recomiendo que uses esta.
>
> 2011/8/25 Daπid <davidmenhur en gmail.com>:
> > Si el fichero no es muy grande, puedes leerlo todo con readlines
> > oldata=oldfile.readlines()
> > newdata=[line+' 1000.0' if len(line)<=27 else line for line in oldata]
> >
> > Y lo escribes a tu nuevo archivo.
> >
> > Ojo, estoy haciendo uso del operador ternario, si usas una versión de
> > Python anterior a la 2.5 tendrás que expandir la list comprehension a
> > mano (pero no es difícil).
> >
> > Y si el fichero es demasiado grande para cargar en memoria, usa
> > readline unas cuantas veces, procesa eso, escríbelo al nuevo archivo y
> > vuelve a leer.
> >
> > 2011/8/25 alito Z <alito81 en gmail.com>:
> >> Hola a todos!
> >> De nuevo con molestias.
> >> Una pregunta, quizás demasiado básica, lo se, pero no soy programadora y
> me
> >> cuesta mucho trabajo entender estas cosas. En fin, les platico.
> >> Tengo una serie de datos en columna como la siguiente:
> >>
> >> 1 M 0.84765 0.90205 0.26366
> >> 2 V 0.57929 0.77705 0.25279
> >> 3 S 0.40724 0.77592 0.16738
> >> 4 K 0.27477 0.65880 0.09151 7.11
> >> 5 L 0.31954 0.63491 0.13393 7.42
> >> 6 S 0.33374 0.57296 0.13246 7.60
> >>
> >>
> >> Las filas siempre son del mismo tamaño.
> >> Lo que quiero es agregar al final de cada columna la cantidad 1000.0,
> pero
> >> solo en las filas que no tienen un número a partir del 27. Por supuesto,
> hay
> >> que agregarle un espacio para que no quede el número unido a la columna
> >> anterior. Y quiero que quede algo como lo siguiente:
> >>
> >> 1 M 0.84765 0.90205 0.26366 1000.0
> >> 2 V 0.57929 0.77705 0.25279 1000.0
> >> 3 S 0.40724 0.77592 0.16738 1000.0
> >> 4 K 0.27477 0.65880 0.09151 7.11
> >> 5 L 0.31954 0.63491 0.13393 7.42
> >> 6 S 0.33374 0.57296 0.13246 7.60
> >>
> >> No me importaría utilizar algún comando para el shell.
> >> Alguna sugerencia?
> >> Gracias.
> >>
> >>
> >>
> >> _______________________________________________
> >> Python-es mailing list
> >> Python-es en python.org
> >> http://mail.python.org/mailman/listinfo/python-es
> >> FAQ: http://python-es-faq.wikidot.com/
> >>
> >>
> >
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://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/20110825/3864eab6/attachment.html>


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