mgr*_*ber 1 python unicode beautifulsoup backslash unicode-escapes
我用 BeautifulSoup 删除了一个网页。我得到了很好的输出,除了列表的一部分在获取文本后看起来像这样:
list = [u'that\\u2019s', u'it\\u2019ll', u'It\\u2019s', u'don\\u2019t', u'That\\u2019s', u'we\\u2019re', u'\\u2013']
Run Code Online (Sandbox Code Playgroud)
我现在的问题是如何摆脱或用它们的特殊字符替换这些双反斜杠。
如果我打印示例列表的第一个元素,输出看起来像
print list[0]
that\u2019s
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多关于这个主题的其他问题/线程,但我最终更加困惑,因为我是一个考虑 unicode/编码/解码的初学者。
我希望有人能帮助我解决这个问题。
谢谢!MG
由于您在那里使用 Python 2,因此只需重新应用“解码”方法 - 使用特殊的编解码器“unicode_escape”。它“看到”“物理”反冲并将这些序列解码为正确的 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]
Run Code Online (Sandbox Code Playgroud)
对于使用 Python3 到达这里的任何人:在该版本中,不能将“解码”方法应用于strbeautifulsoup 提供的对象 - 必须首先将这些对象重新编码为字节字符串对象,然后使用uncode_escape编解码器进行解码。出于这些目的,使用latin1编解码器作为transparent编码很有用: str 对象中的所有字节都保留在新的字节对象中:
result = [part.encode('latin1').decode('unicode_escape') for part in data]
Run Code Online (Sandbox Code Playgroud)