Python:正确去除字符串中的 <p> 和 </p> 的方法?
我想从一个字符串中去掉 <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
(还有 rstrip
和 lstrip
)只适合用来去掉一组字符,而不是去掉一个完整的多字符字符串。
如果你想把 <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>', '')