如何使用BeautifulSoup 4 替换或移除HTML实体如" 

28 投票
5 回答
54378 浏览
提问于 2025-04-17 17:27

我正在用Python和BeautifulSoup 4库处理HTML,但我找不到简单的方法把 替换成空格。结果它似乎被转换成了一个Unicode的不可断行空格字符。

我是不是漏掉了什么简单的东西?用BeautifulSoup把 替换成普通空格的最好方法是什么?

补充一下,我使用的是最新版本的BeautifulSoup 4,所以在BeautifulSoup 3中的convertEntities=BeautifulSoup.HTML_ENTITIES选项是不可用的。

5 个回答

17

你可以把不换行的空格符号换成普通的空格。

nonBreakSpace = u'\xa0'
soup = soup.replace(nonBreakSpace, ' ')

这样做的好处是,即使你在使用BeautifulSoup这个工具,也不需要特别去处理这些空格。

31
>>> soup = BeautifulSoup('<div>a&nbsp;b</div>')
>>> soup.prettify(formatter=lambda s: s.replace(u'\xa0', ' '))
u'<html>\n <body>\n  <div>\n   a b\n  </div>\n </body>\n</html>'

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

19

请查看文档中的实体部分。BeautifulSoup 4会为所有实体生成正确的Unicode字符:

任何传入的HTML或XML实体都会被转换成对应的Unicode字符。

没错,&nbsp;会被转换成一个不换行的空格字符。如果你真的想要它们变成普通的空格字符,那你就需要进行Unicode替换。

撰写回答