我的字符串看起来像\\xec\\x88\\x98
,但是如果我打印它们看起来像\xec\x88\x98
,当我解码它们时它们看起来像\xec\x88\x98
如果我手动将字符串键入\xec\x88\x98
然后解码,我会得到我想要的值수
。
如果我x.decode('unicode-escape')
它会删除双斜杠,但在解码x.decode('unicode-escape')
返回的值时,我得到的值是ì
。
我如何解码原始\\xec\\x88\\x98
,以便获得正确的输出值?
答案 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接收数据。