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 <davidmen...@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 <davidmen...@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 <alit...@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@python.org > >> http://mail.python.org/mailman/listinfo/python-es > >> FAQ: http://python-es-faq.wikidot.com/ > >> > >> > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/