Python:正确去除字符串中的 <p> 和 </p> 的方法?

3 投票
5 回答
5710 浏览
提问于 2025-04-16 18:33

我想从一个字符串中去掉 <p></p> 标签(假设这个字符串叫 s)。

现在我正在这样做:

s.strip('"<p>""</p>"')

我不太确定我这样做是否正确,但对我用过的大部分字符串来说,这个方法还算有效。

不过,我还是会得到这样的字符串: Here goes..</p>

有没有其他有效的方法可以去掉这些标签?速度和效率不是问题,我只需要一个能完成工作的有效方法。

测试案例

假设:
s="<p>Here goes..</p>"

在对 s 进行必要的操作后,print s 应该输出:
Here goes..

5 个回答

3

你想要把字符串中的所有字符,比如 "<p>""</p>",都去掉。使用 strip 的话,它会把这个值当成一个 集合 来处理,也就是说,它会把字符串中的任何 "<p/> 都去掉。

>>> s = 'Here goes "/p>'
>>> s.strip('"<p>""</p>"')
'Here goes '

所以,使用 strip(还有 rstriplstrip)只适合用来去掉一组字符,而不是去掉一个完整的多字符字符串。

如果你想把 <p> 从开头去掉,</p> 从结尾去掉,可以用下面的方法:

if s.startswith('<p>'):
     s = s[3:]
if s.endswith('</p>'):
     s = s[:-4]

如果你需要在字符串的其他地方去掉这些内容,就需要用 s.replace 了:

s.replace('<p>', '').replace('</p>', '')

或者你也可以看看正则表达式。

10

如果你需要处理很多HTML或XML内容,建议使用一个解析器,这样可以更轻松、安全地对它们进行操作,而不是仅仅用简单的字符串处理函数。我个人非常喜欢BeautifulSoup来做这种工作。它可以处理不太规范的标记,并且提供了一个非常优雅的接口。

在你的例子中,你可以这样使用它:

>>> soup = BeautifulSoup('<p>hello world</p>')
>>> soup.text
u'hello world'
8

假设你并不是想要清理XML或HTML,那么下面的内容就可以使用:

s = s.replace('<p>', '').replace('</p>', '') 

撰写回答