Я знаю, что я собираюсь предложить, это скорее обходной путь, чем «решение», но я снова и снова разочаровывался всевозможными странными персонажами, с которыми приходилось сталкиваться «кодировать это» или «закодировать это», иногда успешно, а часто нет.
В зависимости от типа текста, используемого в newurl
, совокупность проблемных символов, вероятно, ограничена. Поэтому я имею дело с ними в каждом конкретном случае: каждый раз, когда я получаю одну из этих ошибок, я делаю это:
import unicodedata
unicodedata.name('\u2019')
В вашем случае вы получите это:
'RIGHT SINGLE QUOTATION MARK'
Старая, надоедливая, правильная одинарная кавычка ... Итак, , как предлагается здесь , я просто заменяю этот надоедливый символ другим, который похож на него, но не вызывает ошибку; в вашем случае
colored_words = list(map(highlight, textpara)).replace(u"\u2019", "'") # or some other replacement character
должно работать. И вы ополаскиваете и повторяете каждый раз, когда появляется эта ошибка. Следует признать, что это не самое элегантное решение, но через некоторое время все возможные странные символы в вашем newurl
перехвачены и ошибки прекращаются.