reemplazar datos de una cadena en orden inverso

Chema Cortes py en ch3m4.org
Vie Feb 23 04:03:52 CET 2007


El Martes, 20 de Febrero de 2007 23:10, Oscar de Anda escribió:
> Gracias a todos por su amable respuesta.
>
> Esta última opción, la de Luis Miguel, me parece muy interesante, lo voy
> a intentar de esa forma.

Aunque también te recomiendo que uses esta opción, sólo funcionará si el texto 
está bien formado XML. Una alternativa podría ser usar el módulo 're'. Con un 
poco de pericia, se puede incluso arreglar algún que otro error en el formato 
(mayúsculas mal puestas, espacios que sobran, añadir saltos de línea, etc). 
Aquí va un ejemplo:

import re

XML="<h2>subtitulo1</h2><p>parrafo</p><p>parrafo1</p><p>parrafo2</p><h2>subtitulo2</h2><p>parrafo3</p><h2>subtitulo3</h2>"

PAT="""(?xi)   #verbose+case insensitive
###
### Patrón para dividir el texto por subtítulos
###
<h2>.*?</h2>       #subtitulo
(?:<p>.*?</p>)*    #parrafos dependientes
"""

subtitulos=re.findall(PAT,XML)

#cambios en el último subtitulo
s=subtitulos[-1]
subtitulos[-1]=re.sub("<(/?)h2>",r"<\1em>",s)

#unión de todos los elementos separando en líneas cada subtítulo
XML="\n".join(subtitulos)




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