我有以下HTML片段:
<div><span>This is some text.</span></div>
我想将span
代码中的div
替换为一个不间断的空格(即
),从而产生以下HTML SOURCE :
<div> </div>
我试过
soup.div.span.replace_with(' ')
但结果是
<div>&nbsp;</div>
我也试过
soup.div.span.replace_with(' ') // single space character
但结果是
<div> </div>
如何插入不间断空格实体?
答案 0 :(得分:4)
实体代表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> </div></body></html>'
请注意,我需要使用output formatter强制BeautifulSoup在输出中使用实体;默认是使用文字字符(适用于浏览器)。