gpt4 book ai didi

从字符串中删除 HTML 标记的 Python 代码

转载 作者:IT老高 更新时间:2023-10-28 21:07:01 24 4
gpt4 key购买 nike

我有这样的文字:

text = """<div>
<h1>Title</h1>
<p>A long text........ </p>
<a href=""> a link </a>
</div>"""

使用纯 Python,没有外部模块我想要这个:

>>> print remove_tags(text)
Title A long text..... a link

我知道我可以使用 lxml.html.fromstring(text).text_content() 来做到这一点,但我需要在纯 Python 中使用 2.6+ 的内置或 std 库来实现相同的目标

我该怎么做?

最佳答案

使用正则表达式

使用正则表达式,您可以清理 <> 中的所有内容:

import re
# as per recommendation from @freylis, compile once only
CLEANR = re.compile('<.*?>')

def cleanhtml(raw_html):
cleantext = re.sub(CLEANR, '', raw_html)
return cleantext

某些 HTML 文本还可以包含未括在括号中的实体,例如 ' &nsbm '。如果是这种情况,那么您可能希望将正则表达式编写为

CLEANR = re.compile('<.*?>|&([a-z0-9]+|#[0-9]{1,6}|#x[0-9a-f]{1,6});')

这个 link包含有关此的更多详细信息。

使用 BeautifulSoup

您也可以使用 BeautifulSoup额外的包来找出所有的原始文本。

调用 BeautifulSoup 时需要显式设置解析器我推荐"lxml"如替代答案中所述(比默认答案( html.parser )更强大(即无需额外安装即可使用)。

from bs4 import BeautifulSoup
cleantext = BeautifulSoup(raw_html, "lxml").text

但这并不妨碍你使用外部库,所以我推荐第一种解决方案。

编辑:使用 lxml您需要 pip install lxml .

关于从字符串中删除 HTML 标记的 Python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9662346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com