0

在 HTML 文件中,我遇到了以下情况:

<span class="finereader"></span>

或者

<span class="finereader">a</span>

我想删除所有这些标签。第二个例子表明标签下可能有一个字母(或数字,但只有 1)。这封信不应该被删除,只有<span class="finereader">和以下</span>。是否有任何 re.sub-expression 可以做到这一点?谢谢你的帮助。

4

2 回答 2

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())
于 2013-09-01T21:45:07.873 回答
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
于 2013-09-01T21:41:53.643 回答