Это немного опасно в зависимости от того, откуда идет строка, но как насчет:
>>> s = '\u003cfoo\u003e' >>> eval('u"'+s.replace('"', r'\"')+'"').encode('ascii') '<foo>'