如何使用BeautifulSoup 4 替换或移除HTML实体如"
我正在用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 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字符。
没错,
会被转换成一个不换行的空格字符。如果你真的想要它们变成普通的空格字符,那你就需要进行Unicode替换。