HTMLParser tiene la funcionalidad en la biblioteca estándar. Está, por desgracia, indocumentado:
(python2 Docs)
>>> 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 está documentada, pero se requiere hacer una gran parte del trabajo tú mismo.
Si solo necesita las entidades XML predefinidas (lt, gt, amp, quot, apos), puede usar minidom para analizarlas. Si solo necesita las entidades predefinidas y sin referencias de caracteres numéricos, incluso podría usar simplemente un reemplazo de cadena antiguo para la velocidad.
+1 No conocía esa función de HTMLParser – vartec
Aquí hay una función documentada de la biblioteca estándar que convertirá el código HTML escapado en una cadena normal: http://docs.python.org/library/xml.sax. utils.html # xml.sax.saxutils.unescape –
En Python 3.4, está [documentado] (https://docs.python.org/3/library/html.html#html.unescape). – 9000