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(\'.\')
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...