我想从字符串中删除<p>
和</p>
(假设为s
)。
现在我正在这样做:
s.strip('"<p>""</p>"')
我不确定我所做的事情是否正确,但这对我使用的大多数字符串都足够有效。
除此之外,我仍然会收到以下字符串:Here goes..</p>
还有其他有效的剥离方法吗?它不需要快速或有效。我需要有效的东西才能完成工作。
让我们说:
s="<p>Here goes..</p>"
在s
上执行必要的操作后,print s
应该给出:
Here goes..
答案 0 :(得分:11)
如果您正在处理大量HTML / XML,您可能希望使用解析器轻松安全地操作它,而不是使用基本的字符串操作函数。我真的很喜欢BeautifulSoup这种工作。它适用于无效标记,并且具有非常优雅的API。
在您的示例中,您可以像这样使用它:
>>> soup = BeautifulSoup('<p>hello world</p>')
>>> soup.text
u'hello world'
答案 1 :(得分:7)
假设您没有尝试清理XML / HTML,以下内容将起作用:
s = s.replace('<p>', '').replace('</p>', '')
答案 2 :(得分:3)
您正试图从您的值中删除"<p>""</p>"
字符串中的所有字符。 strip
将此值视为集,它会删除所有"
,<
,p
,/
或{来自你的字符串{1}}。
>
因此,使用>>> 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
或者您可以查看正则表达式。
答案 3 :(得分:0)
您可以使用正则表达式,只需导入和一行:
>>> import re
>>> s="text<p>text</p>text"
>>> re.sub("</?p>","",s)
'texttexttext'
split("</p>")
失败的原因是试图剥离<
,/
,p
或>
;不是</p>
。
答案 4 :(得分:0)
s="<p>Here goes..</p>"
s = s.lstrip("<p>")
s = s.rstrip("</p>").strip('.')