在HTML文件中,我发生了以下事件:
<span class="finereader"></span>
或
<span class="finereader">a</span>
我想删除所有这些标签。第二个例子表明标签下面可能有一个字母(或数字,但只有1)。不应删除该字母,仅限<span class="finereader">
和以下</span>
。
是否有任何re.sub表达式可以做到这一点?
谢谢你的帮助。
答案 0 :(得分:3)
使用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())
答案 1 :(得分:1)
您可能希望查看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