在python中将“\x”转义字符串转换为可读字符串

2024-09-25 04:21:34 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法将像"\\xe8\\xaa\\x9e\\xe8\\xa8\\x80"这样的\x转义字符串转换为可读形式:"語言"

>>> a = "\\xe8\\xaa\\x9e\\xe8\\xa8\\x80"
>>> print(a)
\xe8\xaa\x9e\xe8\xa8\x80

我知道有一个类似的问题here,但似乎解决方案只适用于拉丁字符。如何将这种形式的字符串转换为可读的CJK字符


Tags: 字符串here解决方案字符形式print办法cjk
2条回答

首先使用'unicode-escape'解码,然后使用'utf8':

a = "\\xe8\\xaa\\x9e\\xe8\\xa8\\x80"
    
decoded = a.encode('latin1').decode('unicode_escape').encode('latin1').decode('utf8')
print(decoded)

# 語言

请注意,由于我们只能解码字节对象,因此需要使用“拉丁1”对其进行透明编码

从字符串a开始,它似乎遵循python的十六进制转义规则,您可以将其解码为字节对象加上解码字符串的长度

>>> a = "\\xe8\\xaa\\x9e\\xe8\\xa8\\x80"
>>> import codecs
>>> codecs.escape_decode(a)
(b'\xe8\xaa\x9e\xe8\xa8\x80', 24)

这里不需要长度,只需获取项目0即可。现在是猜测的时候了。假设这个字符串实际上表示utf-8编码,那么现在就有了一个可以解码的字节数组

>>> codecs.escape_decode(a)[0].decode('utf-8')
'語言'

如果底层编码不同(例如,Windows CJK代码页),则必须使用其解码器进行解码

相关问题 更多 >