当前位置:  开发笔记 > 编程语言 > 正文

HTML实体代码到文本

如何解决《HTML实体代码到文本》经验,为你挑选了2个好方法。

有没有人知道在Python中使用HTML实体代码(例如< &)将字符串转换为普通字符串(例如<&)的简单方法?

cgi.escape()将逃脱字符串(很差),但没有unescape().



1> bobince..:

HTMLParser具有标准库中的功能.遗憾的是,它没有记录:

(Python2 文档)

>>> import HTMLParser
>>> h= HTMLParser.HTMLParser()
>>> h.unescape('alpha < β')
u'alpha < \u03b2'

(Python 3 Docs)

>>> import html.parser
>>> h = html.parser.HTMLParser()
>>> h.unescape('alpha < β')
'alpha < \u03b2'

htmlentitydefs已记录在案,但要求您自己完成大量工作.

如果您只需要XML预定义实体(lt,gt,amp,quot,apos),则可以使用minidom来解析它们.如果您只需要预定义的实体而没有数字字符引用,您甚至可以使用普通的旧字符串替换速度.


以下是标准库中记录的函数,它将转义的HTML代码转换为普通字符串:http://docs.python.org/library/xml.sax.utils.html#xml.sax.saxutils.unescape

2> tghw..:

我一开始忘了标记它,但我正在使用BeautifulSoup.

在文档中挖掘,我发现:

soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)

完全像我希望的那样.


这仅适用于BS4之前的BeautifulSoup版本.如果您使用的是BS4,则必须使用格式化程序:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#output-formatters
它不适用于& 实际上,如果一个字符串包含'&',BeautifulSoup会将它转换回&,这与我希望的相反.
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有