从 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":"</li></ul><p> </p><p><strong>TESTING AND QUALITY</strong></p><ul><li>....."
我想在文本变量中有什么:"description":"TESTING AND QUALITY"
【问题讨论】:
您的代码不起作用,因为text.replace()
无法识别正则表达式。它正在寻找文字文本<.*?>
,当然不存在。
这可能就是你要找的 - ***.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 标记的主要内容,如果未能解决你的问题,请参考以下文章