Python - Unicode 和双反斜杠

Python - Unicode & double backslashes

我用 BeautifulSoup 删除了一个网页。 除了部分列表在获取文本后看起来像这样之外,我得到了很好的输出:

list = [u'that\u2019s', u'it\u2019ll', u'It\u2019s', u'don\u2019t', u'That\u2019s', u'we\u2019re', u'\u2013']

我现在的问题是如何删除这些双反斜杠或将其替换为特殊字符。

如果我打印示例列表的第一个元素,则输出如下所示

print list[0]
that\u2019s

我已经阅读了很多关于这个主题的其他问题/线程,但我最终更加困惑,因为我是一个考虑 unicode/编码/解码的初学者。

我希望有人能帮我解决这个问题。

谢谢! 毫克

这里的问题是网站最终对那些 unicode 参数进行了双重编码,只需执行以下操作:

ls = [u'that\u2019s', u'it\u2019ll', u'It\u2019s', u'don\u2019t', u'That\u2019s', u'we\u2019re', u'\u2013']

ls = map(lambda x: x.decode('unicode-escape'), ls)

现在您有一个包含正确 unicode 编码字符串的列表:

for a in ls:
   print a

因为您在那里使用 Python 2,只需重新应用 "decode" 方法 - 使用特殊编解码器 "unicode_escape"。它 "sees" "physical" 反冲并解码这些序列正确的 unicode 字符:

data =  [u'that\u2019s', u'it\u2019ll', u'It\u2019s', u'don\u2019t', u'That\u2019s', u'we\u2019re', u'\u2013']

result = [part.decode('unicode_escape') for part in data]

致使用 Python3 到达此处的任何人:在该版本中,无法将 "decode" 方法应用于 beautifulsoup 交付的 str 对象 - 首先必须将它们重新编码为字节字符串对象,然后使用 uncode_escape 编解码器进行解码。出于这些目的,使用 latin1 编解码器作为 transparent 编码很有用:str 对象中的所有字节都保留在新字节对象中:

result = [part.encode('latin1').decode('unicode_escape') for part in data]