¿Cómo eliminar tags de una cadena en python usando expresiones regulares? (NO en HTML)

Necesito eliminar tags de una cadena en Python.

Title 

¿Cuál es la forma más eficiente de eliminar la etiqueta completa en ambos extremos, dejando solo “Título”? Solo he visto formas de hacer esto con tags HTML, y eso no me ha funcionado en Python. Estoy usando esto particularmente para ArcMap, un progtwig GIS. Tiene sus propias tags para sus elementos de diseño, y solo necesito eliminar las tags para dos elementos de texto de título específicos. Creo que las expresiones regulares deberían funcionar bien para esto, pero estoy abierto a cualquier otra sugerencia.

Esto debería funcionar:

 import re re.sub('<[^>]*>', '', mystring) 

Para todos los que dicen que las expresiones regulares no son la herramienta correcta para el trabajo:

El contexto del problema es tal que todas las objeciones con respecto a los idiomas regulares / libres de contexto no son válidas. Su lenguaje consiste esencialmente en tres entidades: a = < , b = > y c = [^><]+ . Él quiere eliminar cualquier ocurrencia de acb . Esto caracteriza bastante directamente su problema como uno que involucra una gramática libre de contexto, y no es mucho más difícil caracterizarlo como uno regular.

Sé que a todos les gusta la respuesta "no se puede analizar HTML con expresiones regulares", pero el OP no quiere analizarlo, solo quiere realizar una transformación simple.

Por favor, evite el uso de expresiones regulares. Aunque la expresión regular funcione correctamente en su cadena simple, tendrá un problema en el futuro si obtiene una compleja.

Puede utilizar la función BeautifulSoup get_text() .

 from bs4 import BeautifulSoup text = 'Title' soup = BeautifulSoup(text) print(soup.get_text()) 

La búsqueda de esta expresión regular y su sustitución por una cadena vacía debería funcionar.

 /<[A-Za-z\/][^>]*>/ 

Ejemplo (de la shell de python):

 >>> import re >>> my_string = 'Title' >>> print re.sub('<[A-Za-z\/][^>]*>', '', my_string) Title 

Si solo es para analizar y recuperar valor, puede echar un vistazo a BeautifulStoneSoup.

Si el texto de origen es XML bien formado, puede usar el módulo ElementTree stdlib:

 import xml.etree.ElementTree as ET mystring = """Title""" element = ET.XML(mystring) print element.text # 'Title' 

Si la fuente no está bien formada, BeautifulSoup es una buena sugerencia. Usar expresiones regulares para analizar tags no es una buena idea, como han señalado varios carteles.

Utilice un analizador XML, como ElementTree. Las expresiones regulares no son la herramienta adecuada para este trabajo.