【问题标题】:Remove encoded HTML tags from large string in Python从 Python 中的大字符串中删除编码的 HTML 标记
【发布时间】: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;,当然不存在。
  • 这可能就是你要找的 - stackoverflow.com/questions/9662346/…

标签: python html string parsing replace


【解决方案1】:

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

import re

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

【讨论】:

    【解决方案2】:

    尝试改用decode_contents()

    【讨论】:

      猜你喜欢
      • 2012-03-28
      • 2011-04-15
      • 2010-09-19
      • 2017-09-06
      相关资源
      最近更新 更多