Удаление символов \u2018 и\u2019

Я использую Beautiful Soup для анализа веб-страниц и печати имени веб-страниц, посещенных на терминале. Однако часто имя веб-страницы имеет один правый (\ u2018) и символ (\ u2019), который python не может печатать, поскольку он дает ошибку кодирования charmap. Есть ли способ удалить эти символы?

Ответ 1

Эти коды являются Unicode для одиночных символов левой и правой кавычек. Вы можете заменить их эквивалентом ASCII, который Python не должен иметь проблем с печатью в вашей системе:

>>> print u"\u2018Hi\u2019"
‘Hi’
>>> print u"\u2018Hi\u2019".replace(u"\u2018", "'").replace(u"\u2019", "'")
'Hi'

Альтернативно с регулярным выражением:

import re
s = u"\u2018Hi\u2019"
>>> print re.sub(u"(\u2018|\u2019)", "'", s)
'Hi'

Однако у Python не должно быть проблем с печатью версии Unicode. Возможно, вы используете str() где-нибудь, который попытается преобразовать ваш unicode в ascii и выбросить ваше исключение.