Это - большой ресурс, чтобы начать изучать, как создать расширение FireFox:
, Как создать расширения Firefox
, Это - потрясающее учебное руководство, и будут покрытия большая часть типа расширений.
Редактирование: Обновленная ссылка для использования заархивированной копии начиная с исходной страницы больше не существует
Попробуйте следующее:
import re
def _callback(matches):
id = matches.group(1)
try:
return unichr(int(id))
except:
return id
def decode_unicode_references(data):
return re.sub("&#(\d+)(;|(?=\s))", _callback, data)
data = "U.S. Adviser’s Blunt Memo on Iraq: Time ‘to Go Home’"
print decode_unicode_references(data)
Это действительно работает:
from BeautifulSoup import BeautifulStoneSoup
s = "U.S. Adviser’s Blunt Memo on Iraq: Time ‘to Go Home’"
decoded = BeautifulStoneSoup(s, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
Если вам нужна строка вместо объекта Unicode, вам нужно будет декодировать ее в кодировку, которая поддерживает используемые символы; В ISO-8859-1 нет:
result = decoded.encode("UTF-8")
К сожалению, вам нужен внешний модуль для чего-то вроде этого; простое декодирование сущностей HTML / XML должно быть в стандартной библиотеке и не требовать от меня использования библиотеки с бессмысленными именами классов, такими как BeautifulStoneSoup. (Имена классов и функций не должны быть "творческими", они должны иметь смысл.)
На самом деле у вас нет HTML-сущностей. Есть ТРИ разновидности тех & .....; штучки - например & # 160; & # xa0; & nbsp;
все означают U + 00A0 ПРОБЕЛ БЕЗ РАЗРЫВА.
& # 160;
(тип, который у вас есть) - это "ссылка на числовой символ" (десятичный).
& # xa0;
- это «цифровая символьная ссылка» (шестнадцатеричная).
& nbsp;
- это объект.
Дополнительная литература: http://htmlhelp.com/reference/html40/entities/
Здесь вы найдете код для Python2.x, который выполняет все три сканирования за один прием: http : //effbot.org/zone/re-sub.htm#unescape-html