【问题标题】:Python - Beautiful Soup - How to Replace a String With a Non-Breaking Space?Python - Beautiful Soup - 如何用不间断空格替换字符串?
【发布时间】:2014-10-13 06:57:23
【问题描述】:

我有以下 HTML 片段:

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

我想用一个不间断的空格(即&amp;nbsp;)替换div 标记中的span,从而得到以下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>

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

【问题讨论】:

标签: python beautifulsoup


【解决方案1】:

&amp;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 在输出中使用实体;默认是使用文字字符(这对浏览器来说很好)。

【讨论】:

    猜你喜欢
    • 2013-10-06
    • 2016-06-10
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2017-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多