Кодировать Декодирование строк python

У меня есть список html-страниц, которые могут содержать определенные закодированные символы. Некоторые примеры приведены ниже:

<a href="mailto:lad%20at%20maestro%20dot%20com"> <em>ada@graphics.maestro.com</em> <em>mel@graphics.maestro.com</em> 

Я хотел бы расшифровать (бежать, я не уверен в текущей терминологии) эти строки –

  <a href="mailto:lad at maestro dot com"> <em>ada@graphics.maestro.com</em> <em>mel@graphics.maestro.com</em> 

Обратите внимание: страницы HTML находятся в строчном формате. Кроме того, я НЕ хочу использовать какую-либо внешнюю библиотеку, такую ​​как BeautifulSoup или lxml, только собственные библиотеки python в порядке.

Изменить

Решение ниже не идеально. Устранение HTML-парсера с помощью urllib2 бросает

 UnicodeDecodeError: 'ascii' codec can't decode byte 0x94 in position 31: ordinal not in range(128) 

ошибка в некоторых случаях.

    One Solution collect form web for “Кодировать Декодирование строк python”

    Вам нужно unescape HTML-сущности и URL-unquote.
    Стандартная библиотека имеет HTMLParser и urllib2 чтобы помочь с этими задачами.

     import HTMLParser, urllib2 markup = '''<a href="mailto:lad%20at%20maestro%20dot%20com"> <em>ada&#x40;graphics.maestro.com</em> <em>mel&#x40;graphics.maestro.com</em>''' result = HTMLParser.HTMLParser().unescape(urllib2.unquote(markup)) for line in result.split("\n"): print(line) 

    Результат:

     <a href="mailto:lad at maestro dot com"> <em>ada@graphics.maestro.com</em> <em>mel@graphics.maestro.com</em> 

    Редактировать:
    Если ваши страницы могут содержать символы, отличные от ASCII, вам необходимо позаботиться о декодировании ввода и кодировании на выходе.
    Загруженный образец файла имеет набор символов, установленный на cp-1252 , поэтому давайте попробуем декодировать его в Unicode:

     import codecs with codecs.open(filename, encoding="cp1252") as fin: decoded = fin.read() result = HTMLParser.HTMLParser().unescape(urllib2.unquote(decoded)) with codecs.open('/output/file.html', 'w', encoding='cp1252') as fou: fou.write(result) 

    Edit2:
    Если вам не нравятся символы, отличные от ASCII, вы можете немного упростить:

     with open(filename) as fin: decoded = fin.read().decode('ascii','ignore') ... 
    Python - лучший язык программирования в мире.