Python: Cómo convertir texto formateado de markdown a texto

Necesito convertir texto de bajada a formato de texto simple para mostrar el resumen en mi sitio web. Quiero el código en python.

Este módulo le ayudará a hacer lo que usted describe:

http://www.freewisdom.org/projects/python-markdown/Using_as_a_Module

Una vez que haya convertido el markdown a HTML, puede usar un analizador de HTML para eliminar el texto sin formato.

Su código podría verse algo como esto:

 from BeautifulSoup import BeautifulSoup from markdown import markdown html = markdown(some_html_string) text = ''.join(BeautifulSoup(html).findAll(text=True)) 

Lo comenté y lo eliminé porque finalmente creo que veo el problema aquí: puede ser más fácil convertir el texto de reducción de marca a HTML y eliminar el HTML del texto. No tengo conocimiento de nada que elimine efectivamente la reducción del texto, pero hay muchas soluciones de HTML a texto sin formato.

A pesar de que esta es una pregunta muy antigua, me gustaría sugerir una solución que se me ocurrió recientemente. Este no usa BeautifulSoup ni tiene una sobrecarga de conversión a HTML y viceversa.

La clase principal del módulo markdown Markdown tiene una propiedad output_formats que no es configurable, pero por lo demás es parchable, como casi cualquier cosa en python. Esta propiedad es un nombre de formato de salida de asignación de dict a una función de representación. Por defecto, tiene dos formatos de salida, ‘html’ y ‘xhtml’ correspondientemente. Con un poco de ayuda puede tener una función de representación de texto simple que es fácil de escribir:

 from markdown import Markdown from io import StringIO def unmark_element(element, stream=None): if stream is None: stream = StringIO() if element.text: stream.write(element.text) for sub in element: unmark_element(sub, stream) if element.tail: stream.write(element.tail) return stream.getvalue() # patching Markdown Markdown.output_formats["plain"] = unmark_element __md = Markdown(output_format="plain") __md.stripTopLevelTags = False def unmark(text): return __md.convert(text) 

la función Desmarcar toma el texto de reducción como una entrada y devuelve todos los caracteres de reducción de caracteres eliminados.