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

如果我以\xec\x88\x98的形式手动输入字符串,然后对其进行解码,则得到的值是

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

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

最佳答案

在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 Spider中)解决此问题,以便您以纯UTF-8格式接收数据,而不是当前获取的以字符串转义的UTF-8格式接收数据。

关于python - 解码包含双斜杠的Python Unicode字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41374122/

10-12 04:27