Python имеет модуль htmlentitydefs , но это не включает функцию, чтобы не выйти из объектов HTML.
у разработчика Python Fredrik Lundh (автор elementtree, среди прочего) есть такая функция на его веб-сайте , который работает с десятичным числом, шестнадцатеричными и именованными сущностями:
import re, htmlentitydefs
##
# 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 unescape(text):
def fixup(m):
text = m.group(0)
if text[:2] == "":
# character reference
try:
if text[:3] == "":
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, text)
Эти наклонные двойные кавычки не являются символами ASCII. Сообщение об ошибке вводит в заблуждение относительно того, что они «многобайтовые».
Вы пытались добавить магический комментарий в сценарии, где вы используете не-ASCII CHARS? Это должно идти сверху сценария.
#!/bin/env ruby
# encoding: utf-8
Это работало для меня, как очарование.
Если вы хотите легко добавить магические комментарии ко всем исходным файлам проекта, вы можете использовать magic_encoding
gem
sudo gem install magic_encoding
затем просто вызовите magic_encoding
в терминале из корня вашего приложения.