Foros del Web » Programando para Internet » Python »

Eliminar/reemplazar párrafo de Texto con Python

Estas en el tema de Eliminar/reemplazar párrafo de Texto con Python en el foro de Python en Foros del Web. Buenas, Quisiera hacer una consulta en lo sgte: Tengo un archivo de texto existente, que dentro del mismo, contiene un párrafo así: ## Start Aqui ...
  #1 (permalink)  
Antiguo 22/03/2009, 16:36
 
Fecha de Ingreso: marzo-2009
Ubicación: Argentina
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Eliminar/reemplazar párrafo de Texto con Python

Buenas,

Quisiera hacer una consulta en lo sgte:

Tengo un archivo de texto existente, que dentro del mismo, contiene un párrafo así:

## Start
Aqui hay algunas lineas
## End

Ahora, yo quisiera poder de alguna manera eliminar ese párrafo únicamente sin modificar el resto del archivo, o sea eliminar desde ## Start hasta ## End (incluyendo el texto que haya entre dichas etiquetas)

Alguien me podría ayudar? Soy algo nuevo en Python...

Muchas Gracias de ante mano!

Saludos.

Última edición por GuSPy; 30/03/2009 a las 09:45
  #2 (permalink)  
Antiguo 22/03/2009, 20:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Lo que puedes hacer es leer primero el archivo y guardar su contenido en una variable (usando el método read()). Modificas los datos de esa variable como quieras, y volver a escribir el archivo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 22/03/2009, 20:50
 
Fecha de Ingreso: marzo-2009
Ubicación: Argentina
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Mmm podría si.. pero prefiero algo más directo...
Alguna otra idea?

Gracias.
  #4 (permalink)  
Antiguo 22/03/2009, 21:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Otra opción es abrir el archivo como 'r+' y posicionar el cursor de escritura usando seek(), aunque dependiendo del caso, me parece más difícil de implementar que la opción anterior.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 23/03/2009, 07:03
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Utilizando expresiones regulares te mola, investiga ya que es sencillo sacar lo que tú quieres con esta, si quedas perdido te explico como se debe hacer.
__________________
Revista Código Latino
SoloCodigo
  #6 (permalink)  
Antiguo 23/03/2009, 08:30
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Cita:
Iniciado por RadicalEd Ver Mensaje
Utilizando expresiones regulares te mola, investiga ya que es sencillo sacar lo que tú quieres con esta, si quedas perdido te explico como se debe hacer.
Usar expresiones regulares parece el camino correcto, pero no parece ser el problema principal.
Si entiendo bien, el problema viene dado por el hecho de que NO se puede modificar un archivo como si fuese una cadena cualquiera, sea cual sea el procesamiento que se le quiera dar al contenido.

Las opciones dadas por David el Grande (hola ) son las que hay disponibles, no hay "magia" involucrada.


Saludos.
  #7 (permalink)  
Antiguo 23/03/2009, 10:07
 
Fecha de Ingreso: marzo-2009
Ubicación: Argentina
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Cita:
Iniciado por RadicalEd Ver Mensaje
Utilizando expresiones regulares te mola, investiga ya que es sencillo sacar lo que tú quieres con esta, si quedas perdido te explico como se debe hacer.
Es lo que yo pensaba usando re...
Me podrías dar una idea de como lo harías? Digamos... supongo que habría que buscar las etiquetas con re.search() o me equivoco?

Gracias de ante mano.

Saluudos.
  #8 (permalink)  
Antiguo 30/03/2009, 06:43
 
Fecha de Ingreso: marzo-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Buscando como hacer algo parecido di con este hilo del foro.
Yo lo solucioné utilizando la funcion readlines(). Basicamente esta funcion 'itera' sobre las lineas de un archivo abierto previamente en modo lectura.
mi algoritmo mas o menos fue el siguiente:
f = open('mi_archivo','r')
f1 = open ('archivo_nuevo','w')
for line in f.readlines():
if me_interesa(line):
escribo_en_archvo_nuevo
Espero que te sirva
Un saludo
  #9 (permalink)  
Antiguo 30/03/2009, 08:36
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Cita:
Iniciado por sotijoe Ver Mensaje
Buscando como hacer algo parecido di con este hilo del foro.
Yo lo solucioné utilizando la funcion readlines(). Basicamente esta funcion 'itera' sobre las lineas de un archivo abierto previamente en modo lectura.
mi algoritmo mas o menos fue el siguiente:
f = open('mi_archivo','r')
f1 = open ('archivo_nuevo','w')
for line in f.readlines():
if me_interesa(line):
escribo_en_archvo_nuevo
Espero que te sirva
Un saludo
Más simple aún: Python permite iterar sobre el objeto archivo, y lo menciona como una alternativa "fast, memory efficient, and leads to simpler code"

Código python:
Ver original
  1. for line in f:
  2.     if me_interesa(line):
  3.         escribo_en_archivo_nuevo


Saludos.
  #10 (permalink)  
Antiguo 30/03/2009, 09:51
 
Fecha de Ingreso: marzo-2009
Ubicación: Argentina
Mensajes: 4
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

A ver si entendí.. la idea es leer el archivo original, eliminar la parte no deseada y guardarla como nuevo archivo?
  #11 (permalink)  
Antiguo 30/03/2009, 10:01
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Cita:
Iniciado por GuSPy Ver Mensaje
A ver si entendí.. la idea es leer el archivo original, eliminar la parte no deseada y guardarla como nuevo archivo?
Pues sí, tanto la respuesta original de David el Grande como mi primer respuesta indican eso mismo. No hay forma más sencilla.


saludos.
  #12 (permalink)  
Antiguo 21/04/2009, 16:28
Avatar de Theoden  
Fecha de Ingreso: abril-2009
Mensajes: 28
Antigüedad: 15 años
Puntos: 1
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Esto es el fragmento de un codiguillo que reemplaza una cadena en un fichero por un texto que le digamos:

supongamso que el fichero hi.txt tiene el siguiente texto: juan es juan juan juan

Código python:
Ver original
  1. os.chdir("/home/theoden/Desktop")   #aqui establecemos el directorio donde esta el fichero
  2. f = open("hi.txt",'r')    #aqui abrimos el fichero con permisos de lectura
  3. chain = f.read()    #guardamos su contenido en una variable
  4. chain = chain.replace("juan","ostia")    #sustituimos la cadena por la cadena que especificamos, en este caso sustituimos  la palabra juan por la palabra ostia y donde quiera que encuentre juan pondra ostia
  5.  
  6. f.close()    #aqui cerramos el fichero
  7.  
  8. otro = open("/home/theoden/Desktop/hi.txt",'w')    #abrimos el fichero con permisos de escritura
  9. otro.write(chain)    #escribimos la cadena y aactualizada y sin la palabra juan
  10. otro.close()    #cerramos el fichero

el fichero queda ahora con el siguiente texto:
ostia es ostia ostia ostia

Última edición por AlvaroG; 25/10/2009 a las 15:07 Razón: resaltado de sintaxis
  #13 (permalink)  
Antiguo 25/10/2009, 12:11
 
Fecha de Ingreso: octubre-2009
Mensajes: 1
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

yo no lo tengo claro. Como haces para reemplazar o eliminar unas palabras o párrafos de varios txt o html

que es otro

otro.write(chain) #escribimos la cadena y actualizada y sin la palabra juan donde pongo la cadena "ostia"

Última edición por danibarna; 25/10/2009 a las 12:28
  #14 (permalink)  
Antiguo 25/10/2009, 15:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Explica la pregunta por favor. ¿Qué parte no entiendes?
  #15 (permalink)  
Antiguo 21/01/2010, 13:07
 
Fecha de Ingreso: enero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

Yo entiendo tu pregunta, y soy de los que pasan por aki para obtener una respuesta, y no la consegui... ahora..

explicare... estube modificando un plugin de rhythmbox.. lo q me hiso llegar a ki en busca de reemplazar partes de cadenas... la diferencia es que esta el texto en una variable...

bien ahora simplemente usando

las funciones..

find y replace..

bueno sera mejor dar un ejemplo...
pongamos este texto por ejemplo

Watched her as she wiped her eyes
You don't make me sorry
Now I know a-that you never listen, listen

Thinking about that high school dance
Worrying about the finals
Yes, I know you're feeling lonely
A-lonely, so lonely


.. y se me ocurre borrar desde "Thinking about..... " hasta "....finals"

tengo la veriable result con el texto.. aremos lo siguiente

Código Python:
Ver original
  1. inicia = result.find('Thinking') #buscamos el numero de caracer donde empieza la palabra
  2. finaliza = result.find('finals') #buscamos el numero de caracter donde empieza la palabra finals
  3. result = result.replace(result[inicia:finaliza+6], 'reemplazado') #remplazar todo lo que hay entre esas 2 palabras con reemplazado

use un finaliza+6 por que al hacer el find 'finals' devuelve el valor donde comienza la letra "f" entonces borraria asta la "f" y no toda la palabra finals son 6 letras...

espero que esto pueda ayudar..

a si es como te entendi ...

Saludos...
  #16 (permalink)  
Antiguo 21/01/2010, 14:21
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Eliminar/reemplazar párrafo de Texto con Python

A pesar de ser algo viejo el post, me anime a postear.

Código Python:
Ver original
  1. import re
  2. dirty_text = "Inicio ### start Este texto es tan vacio... ### end Fin"
  3. patter = re.compile('### start.*?### end', re.I | re.S)
  4. clean_text = patter.sub("", dirty_text)

Lo siento, pero no me resisto a un problema sin resolver.

Última edición por razpeitia; 24/01/2010 a las 16:33
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 11:24.