Несмотря на то, что это очень старый вопрос, я хотел бы предложить решение, которое я недавно нашел. Этот не использует BeautifulSoup и не имеет затрат на конвертацию в html и обратно.
Класс ядра Markdown markdown имеет свойство output_formats , которое не конфигурируется, но в других случаях может быть исправлено, как почти все в python. Это свойство является именем выходного формата, определяющим форматирование, для функции рендеринга. По умолчанию он имеет два формата вывода: «html» и «xhtml» соответственно. С небольшой помощью он может иметь функцию рендеринга в виде открытого текста, которую легко написать:
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)
unmark функция принимает текст уценки в качестве ввода и возвращает все символы уценки, которые были удалены.