使用Python和正则表达式,如何从HTML中删除<sup>标签?

4
使用Python正则表达式,我如何删除HTML中所有的标签? 这些标签有时具有样式,例如以下内容:
<sup style="vertical-align:top;line-height:120%;font-size:7pt">(1)</sup>

我想要从一大段html字符串中删除包含在sup标签之间的所有内容。


你的最终结果会是什么? - Avinash Raj
2
对于试图使用正则表达式操作HTML的OP来说,这是必读的内容:https://dev59.com/X3I-5IYBdhLWcg3wq6do#1732454 - jonrsharpe
1
我通过将HTML转换为字符串并使用以下内容解决了我的问题: re.sub(r'<sup+.*?sup>+','',HTML字符串) - user2634569
1个回答

6
我会使用HTML解析器来代替(为什么)。例如,BeautifulSoupunwrap()可以处理您的美丽的sup:

Tag.unwrap()是wrap()的相反操作。它将标签替换为标签内的内容。这对于去除标记非常有用。

from bs4 import BeautifulSoup

data = """
<div>
    <sup style="vertical-align:top;line-height:120%;font-size:7pt">(1)</sup>
</div>
"""

soup = BeautifulSoup(data)
for sup in soup.find_all('sup'):
    sup.unwrap()

print soup.prettify()

输出:

<div>
(1)
</div>

谢谢,这样更有效率。我很感激。 - user2634569
有没有一种方法可以删除标签和标签内的内容?当前的解决方案只是删除标签。 - fam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接