如何解决Python:从字符串中剥离<p>和</ p>的正确方法?
| 我想从字符串中去除<p>
和</p>
(假设lets2ѭ)。
现在我正在这样做:
s.strip(\'\"<p>\"\"</p>\"\')
我不确定自己的操作是否正确,但是对于我使用的大多数字符串来说,这已经足够有效了。
除此之外,我仍然得到以下字符串:Here goes..</p>
还有其他有效的剥离方法吗?它不需要快速或高效。我需要有效的方法来完成工作。
测试用例
比方说:
s=\"<p>Here goes..</p>\"
在对s
执行必要的操作后,print s
应给出:
Here goes..
解决方法
假设您不尝试清理XML / HTML,以下方法将起作用:
s = s.replace(\'<p>\',\'\').replace(\'</p>\',\'\')
, 如果要处理大量的HTML / XML,则可能希望使用解析器轻松安全地对其进行操作,而不是使用基本的字符串操作功能。我真的很喜欢BeautifulSoup这样的工作。它可以与无效的标记一起使用,并且具有非常优雅的API。
在您的示例中,可以这样使用它:
>>> soup = BeautifulSoup(\'<p>hello world</p>\')
>>> soup.text
u\'hello world\'
, 您正在尝试从值中剥离\"<p>\"\"</p>\"
字符串中出现的所有所有字符。 strip
将此值视为一个集合,它将从字符串中删除任何\"
,<
,p
,/
或>
。
>>> s = \'Here goes \"/p>\'
>>> s.strip(\'\"<p>\"\"</p>\"\')
\'Here goes \'
因此,仅当您要删除字符集而不是整个多字符字符串时,才使用strip
(以及rstrip
和lstrip
)才适用。
如果要从开头删除“ 0”,从结尾删除“ 1”,则可以使用以下命令:
if s.startswith(\'<p>\'):
s = s[3:]
if s.endswith(\'</p>\'):
s = s[:-4]
如果您需要从字符串的其他位置删除它们,则需要使用s.replace
:
s.replace(\'<p>\',\'\')
或者您可以查看正则表达式。
, 您可以为此使用正则表达式,只需使用导入和一行即可:
>>> import re
>>> s=\"text<p>text</p>text\"
>>> re.sub(\"</?p>\",\"\",s)
\'texttexttext\'
split(\"</p>\")
失败的原因是试图剥离to14ѭ,/
,p
或>
;不是</p>
。
, s=\"<p>Here goes..</p>\"
s = s.lstrip(\"<p>\")
s = s.rstrip(\"</p>\").strip(\'.\')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。