解码包含双黑色斜杠的Python Unicode字符串

时间:2016-12-29 06:14:10

标签: python python-2.7 unicode

我的字符串看起来像\\xec\\x88\\x98,但是如果我打印它们看起来像\xec\x88\x98,当我解码它们时它们看起来像\xec\x88\x98

如果我手动将字符串键入\xec\x88\x98然后解码,我会得到我想要的值

如果我x.decode('unicode-escape')它会删除双斜杠,但在解码x.decode('unicode-escape')返回的值时,我得到的值是ì

我如何解码原始\\xec\\x88\\x98,以便获得正确的输出值?

1 个答案:

答案 0 :(得分:1)

在Python 2中,您可以使用'string-escape' codec'\\xec\\x88\\x98'转换为'\xec\x88\x98',这是u'\uc218'的UTF-8编码。

这是一个简短的演示。不幸的是,我的终端的字体没有那个字符所以我无法打印它。所以我将打印它的名称和它的表示,我也将它转换为Unicode转义序列。

import unicodedata as ud

src = '\\xec\\x88\\x98'
print repr(src)

s = src.decode('string-escape')
print repr(s)

u = s.decode('utf8')
print ud.name(u)
print repr(u), u.encode('unicode-escape')

<强>输出

'\\xec\\x88\\x98'
'\xec\x88\x98'
HANGUL SYLLABLE SU
u'\uc218' \uc218

然而,这是一种“创可贴”解决方案。您应该尝试在上游(在您的Web蜘蛛中)解决此问题,以便您以普通的UTF-8而不是您当前获得的字符串转义的UTF-8接收数据。