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

Daπid davidmenhur en gmail.com
Jue Ago 25 23:36:20 CEST 2011


De nada. Pero lo más importante: ¿lo has entendido?

2011/8/25 alito Z <alito81 en gmail.com>:
> Perfecto, queda genial.
> Muchas gracias por la ayuda :D
> Saludos!
>
> 2011/8/25 Daπid <davidmenhur en gmail.com>
>>
>> Lo que pasa es que estás intentando escribir la lista con write, y eso
>> Python no sabe. Para escribir una lista tienes que usar writelines, o
>> hacerlo a mano (write a cada línea).
>>
>> Antes se me pasó un detalle por alto, y son los saltos de línea.
>> Readlines te va a devolver cada línea acabada en un salto de línea, y
>> al añadir el 1000, aparecerá en la línea siguiente.
>>
>> Aquí todo corregido:
>>
>> archivoviejo=open('datosviejos.txt', 'r')
>> datosviejos=archivoviejo.readlines()
>> archivoviejo.close()
>> datosnuevos=[line[:-1]+' 1000.0\n' if len(line.split(' '))==5 else
>> line for line in datosviejos]
>>
>> archivonuevo=open('datosnuevos.txt', 'w')
>> archivonuevo.writelines(datosnuevos)
>> archivonuevo.close()
>>
>> Fíjate que antes de añadir el 1000.0, quito el último caracter (el
>> salto de línea) y se lo vuelvo a añadir al final.
>>
>> De todas formas, creo que había un comando para quitar los saltos de
>> línea (dependen del SO).
>>
>>
>> 2011/8/25 alito Z <alito81 en gmail.com>:
>> > Hola Kiko:
>> > O.K. El problema es que ahora me sale el siguiente error: TypeError:
>> > expected a character buffer object.
>> > Alguién me puede explicar qué significa y qué puedo hacer para
>> > remediarlo?
>> > Saludos!
>> >
>> > 2011/8/25 Kiko <kikocorreoso en gmail.com>
>> >>
>> >>
>> >> El 25 de agosto de 2011 21:47, alito Z <alito81 en gmail.com> escribió:
>> >>>
>> >>> 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?
>> >>>
>> >>
>> >> Después de hacer eso:
>> >> newdata=[line+' 1000.0' if len(line)<=27 else line for line in oldata]
>> >>
>> >> Debes guardar los nuevos datos con el 1000.0 añadido en otro fichero.
>> >>
>> >> open('minuevofichero.txt', 'w')
>> >> ...
>> >>
>> >>
>> >> _______________________________________________
>> >> 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/
>> >
>> >
>> _______________________________________________
>> 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/
>
>


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