在 HTML 文件中,我遇到了以下情况:
<span class="finereader"></span>
或者
<span class="finereader">a</span>
我想删除所有这些标签。第二个例子表明标签下可能有一个字母(或数字,但只有 1)。这封信不应该被删除,只有<span class="finereader">
和以下</span>
。是否有任何 re.sub-expression 可以做到这一点?谢谢你的帮助。
另一个使用BeautifulSoup 的解决方案:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('htmlfile'))
for elem in soup.find_all('span', class_='finereader'):
elem.replace_with(elem.string or '')
print(soup.prettify())
您可能希望查看beautifulsoup而不是为此任务使用正则表达式。
然后您可以执行以下操作:(在此示例中使用字符串作为 html 文件)
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Sample</title>
</head>
<body>
<span class="dummy">a</span>
<span>b</span>
</body>
</html>
"""
soup = BeautifulSoup(html_doc)
for span in soup.find_all('span'):
print(span.string)
# output:
# a
# b