Python - 美丽的汤 - 如何用不间断的空间替换字符串?

时间:2014-10-13 06:57:23

标签: python beautifulsoup

我有以下HTML片段:

<div><span>This is some text.</span></div>

我想将span代码中的div替换为一个不间断的空格(即&nbsp;),从而产生以下HTML SOURCE

<div>&nbsp;</div>

我试过

soup.div.span.replace_with('&nbsp;')

但结果是

<div>&amp;nbsp;</div>

我也试过

soup.div.span.replace_with(' ') // single space character

但结果是

<div> </div>

如何插入不间断空格实体?

1 个答案:

答案 0 :(得分:4)

&nbsp;实体代表U+00A0 NO-BREAK SPACE字符,使用它作为BeautifulSoup将所有文本内容视为Unicode:

soup.div.span.replace_with(u'\xa0')

演示:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''<div><span>This is some text.</span></div>''')
>>> soup.div.span.replace_with(u'\xa0')
<span>This is some text.</span>
>>> soup.encode_contents(formatter='html')
'<html><body><div>&nbsp;</div></body></html>'

请注意,我需要使用output formatter强制BeautifulSoup在输出中使用实体;默认是使用文字字符(适用于浏览器)。