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]
我用 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]