我正在使用Beautiful Soup来解析网页并打印终端上访问过的网页的名称。但是,网页的名称通常是单一的(\ u2018)和左(\ u2019)字符,python无法打印,因为它提供了charmap编码错误。 有没有办法删除这些字符?
答案 0 :(得分:37)
这些代码是单个左右引号字符的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并抛出异常。