Esto funciona:
from BeautifulSoup import BeautifulStoneSoup
s = "U.S. Adviser’s Blunt Memo on Iraq: Time ‘to Go Home’"
decoded = BeautifulStoneSoup(s, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
Si quieres una cadena en lugar de un objeto Unicode, que necesitará para decodificarlo a una codificación que los soportes los personajes que se usan; ISO-8859-1 no:
result = decoded.encode("UTF-8")
Es lamentable que necesite un módulo externo para algo como esto; la decodificación sencilla de las entidades HTML/XML debe estar en la biblioteca estándar, y no requerir que utilice una biblioteca con nombres de clases sin sentido como "BeautifulStoneSoup". (Los nombres de clases y funciones no deben ser "creativos", deben ser significativos.)
Esta pregunta parece surgir mucho sin una buena solución. Me da ganas de escribir algo mío ... – Triptych
Ha Creo que es la mejor solución que he encontrado hasta ahora. De hecho, podría intentar hacer eso yo mismo. Si lo hago, publicaré mi solución. – KeyboardInterrupt
@Triptych: there is ['unescape()'] (http://stackoverflow.com/a/20715131/4279). – jfs