使用Python移除字符串中的HTML标签/格式

27 投票
5 回答
61028 浏览
提问于 2025-04-16 02:15

我有一段字符串,其中包含了像链接、粗体文本这样的HTML标记。

我想去掉所有的标记,只保留纯文本。

这样做的最好方法是什么?用正则表达式吗?

5 个回答

12

据我所知,用正则表达式来解析HTML并不是个好主意。你最好使用像Beautiful Soup这样的HTML/XML解析器。

13

使用 lxml.html。它比 BeautifulSoup 快很多,而且提取纯文本只需要一条命令。

>>> import lxml.html
>>> page = lxml.html.document_fromstring('<!DOCTYPE html>...</html>')
>>> page.cssselect('body')[0].text_content()
'...'
64

如果你打算使用正则表达式:

import re
def striphtml(data):
    p = re.compile(r'<.*?>')
    return p.sub('', data)

>>> striphtml('<a href="foo.com" class="bar">I Want This <b>text!</b></a>')
'I Want This text!'

撰写回答