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

Posted

技术标签:

【中文标题】从 Python 中的大字符串中删除编码的 HTML 标记【英文标题】:Remove encoded HTML tags from large string in Python 【发布时间】:2019-12-04 05:43:33 【问题描述】:

我有一个带有“描述”键的 JSON 文件,里面有很多 html 标记。我想抹去它们。它们被编码,例如: <ul> 而不是 <ul>

我尝试过text.replace('<.*?>',''),但它不起作用。 我也尝试过使用 BeautifulSoup 做:

text = soup.get_text()

但它也不起作用(它只是解码 html 标签) 最后,我尝试过这样做:

soup = BeautifulSoup(text)
text = soup.get_text()
text = text.replace('<.*?>','')

结合这两个代码,但标签不会被删除...

我现在在“文本”变量中拥有的内容(在使用解码 html 标签的漂亮汤之后):"description":"&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;TESTING AND QUALITY&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;....."

我想在文本变量中有什么:"description":"TESTING AND QUALITY"

【问题讨论】:

您的代码不起作用,因为text.replace() 无法识别正则表达式。它正在寻找文字文本&lt;.*?&gt;,当然不存在。 这可能就是你要找的 - ***.com/questions/9662346/… 【参考方案1】:

您可以尝试使用正则表达式而不是 replace 来丢弃 HTML 标签:

import re

soup = BeautifulSoup(text)
text = soup.get_text()
text = re.sub(r'<.*?>', '', text)

【讨论】:

【参考方案2】:

尝试改用decode_contents()

【讨论】:

以上是关于从 Python 中的大字符串中删除编码的 HTML 标记的主要内容,如果未能解决你的问题,请参考以下文章

从 MySQL 中的大表中删除重复项的最快过程是啥

从 SQL Server 中的大表中删除大部分数据的策略

在推文字符串中删除 @ImSRK 的大查询

python 从下载的facebook数据副本中的wall.htm中提取所有状态更新

从Python中的字符串中删除所有非数字字符

从Python中的字符串中删除奇怪的隐藏字符