Skip to content

Instantly share code, notes, and snippets.

@beniwohli
Created July 17, 2012 09:03
Show Gist options
  • Save beniwohli/3128205 to your computer and use it in GitHub Desktop.
Save beniwohli/3128205 to your computer and use it in GitHub Desktop.
turns html entities into unicode characters
@register.filter
def unescape(value):
"""
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, value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment