Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python替换字符串中的html元素?_Python_Html_Regex_Python 3.x - Fatal编程技术网

如何用python替换字符串中的html元素?

如何用python替换字符串中的html元素?,python,html,regex,python-3.x,Python,Html,Regex,Python 3.x,我有一个字符串,如下所示,其中包含中文: '<span class=H>宜家</span><span class=H>同款</span> 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅' 我可以知道如何通过python和re实现这一点吗?非常感谢 这是一个用HTML解析器解决的小问题: >>> from bs4 import BeautifulSoup >>> >>> data = '<sp

我有一个字符串,如下所示,其中包含中文:

'<span class=H>宜家</span><span class=H>同款</span> 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅'

我可以知道如何通过python和re实现这一点吗?非常感谢

这是一个用HTML解析器解决的小问题:

>>> from bs4 import BeautifulSoup
>>>
>>> data = '<span class=H>宜家</span><span class=H>同款</span> 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅'
>>> soup = BeautifulSoup(data)
>>> soup.text
'宜家同款 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅'
>>来自bs4导入组
>>>
>>>数据收集宜家同款 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅'
>>>汤=美汤(数据)
>>>soup.text
'宜家同款 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅'

对于只使用正则表达式的简单解决方案,您可以搜索以下模式并用空字符串替换所有出现的模式:

\s*<[^>]+>\s*
\s*]+>\s*
例如:

p = re.compile( '\s*<[^>]+>\s*')
p.sub( '', '<span class=H>宜家</span><span class=H>同款</span> 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅')
p=re.compile('\s*]+>\s*'))
p、 子('','宜家同款 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅')

免责声明:这绝不会处理合法HTML的所有可能变化,但是,只要所有输入数据与示例中的数据一样简单,它就会工作。您可以根据需要更改模式,以处理稍微复杂的输入。但是,如果您的目的是将任何格式良好的HTML文档作为inp处理然后,你应该考虑一个实际的HTML解析器,而不是使用正则表达式.< /p>它看起来是一个好的解决方案。我只是想使用正则表达式,而我没有得到正确的解决方案。非常感谢,我会试试这个方法。通过包含<代码> <代码> >代码> /\s*] +> s*/g < /代码>将消除结果中的所有空格。@ PedroPinheiro Pood点。我没有NoTI。ce确认OP中所需的输出确实删除了空格。我将相应地更新我的答案。但是,Python中不需要书尾斜杠。此外,
re.sub
默认使用全局选项,因此也不需要
g
p = re.compile( '\s*<[^>]+>\s*')
p.sub( '', '<span class=H>宜家</span><span class=H>同款</span> 世纪宝贝儿童餐椅婴儿餐椅宝宝餐椅婴儿吃饭椅')