Что ж, я склонен согласиться с тем, что HTMLParser ужасно упускает возможность не включать код для преобразования ссылок на сущности HTML в обычный ASCII и / или другие символы.Я понял, что это исправлено совершенно другой работой в Python3.
Однако, похоже, мы можем написать довольно простой обработчик сущностей что-то вроде:
import htmlentitydefs
def entity2char(x):
if x.startswith('&#x'):
# convert from hexadecimal
return chr(int(x[3:-1], 16))
elif x.startswith('&#'):
# convert from decimal
return chr(int(x[2:-1]))
elif x[1:-1] in htmlentitydefs.entitydefs:
return htmlentitydefs.entitydefs[x[1:-1]]
else:
return x
... хотя мы должны обернутьдля дальнейшей проверки правильности ввода и включения целочисленных преобразований в код обработки исключений.
Но это должно обрабатывать самый минимум примерно в 10 строках кода.Добавление обработки исключений, возможно, удвоит количество строк.