我有一些 html 代码,其中有很多行我想删除,看起来像这样
<span style="position:absolute; border: black 1px solid; left:94px; top:600px; width:6px; height:10px;"></span>
现在还有 span 标签,它们之间有文本,我想保留。
我想用python的re.sub函数删除那些无用的span标签。我写了这个但是它不起作用
html_code_filtered = re.sub('<span*></span>', '', html_code)
我想我在正则表达式中遗漏了一些正确匹配行的内容?
最佳答案
您可以使用类似 BeautifulSoup
的 HTML 解析器删除没有文本的 span
元素。
工作示例:
from bs4 import BeautifulSoup
data = """
<div>
<span style="position:absolute; border: black 1px solid; left:94px; top:600px; width:6px; height:10px;"></span>
<span>useful text</span>
<span></span>
</div>
"""
soup = BeautifulSoup(data, "html.parser")
# find and remove "span" elements with empty contents
for useless in soup.find_all("span", text=lambda text: not text):
useless.extract()
print(soup.prettify())
打印(如您所见,没有内容的 span
元素已被删除):
<div>
<span>
useful text
</span>
</div>
关于python - 从 html 代码中过滤掉空的 <span> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34242499/