Skip to content

Instantly share code, notes, and snippets.

@mccutchen
Created March 26, 2010 17:50
Show Gist options
  • Save mccutchen/345170 to your computer and use it in GitHub Desktop.
Save mccutchen/345170 to your computer and use it in GitHub Desktop.
# Unescape HTML Entities
#
# October 28, 2006 | Fredrik Lundh
#
# This function converts HTML entities and character references to
# ordinary characters.
#
# From: http://effbot.org/zone/re-sub.htm#unescape-html
import re, htmlentitydefs
def unescape(text):
"""Removes HTML or XML character references and entities from a text
string.
@param text The HTML (or XML) source text.
@return The plain text, as a Unicode string, if necessary."""
def fixup(m):
text = m.group(0)
if text[:2] == "&#":
# character reference
try:
if text[:3] == "&#x":
return unichr(int(text[3:-1], 16))
else:
return unichr(int(text[2:-1]))
except ValueError:
pass
else:
# named entity
try:
text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
except KeyError:
pass
return text # leave as is
return re.sub("&#?\w+;", fixup, text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment