Python中如何将UTF-8字节对象转为"\xc3\xa9"格式的字符串?
解决方法:获取字节串的转义字符串表示
你想要的其实是把字节对象的转义序列表示提取成普通字符串,而不是对字节进行解码(解码会得到原字符"é",这显然不是你要的)。这里有两种简单的实现方式:
方法1:利用repr()函数快速提取
repr()函数会返回对象的官方字符串表示,对于字节串来说就是b'\xc3\xa9'这样的格式,我们只需要去掉首尾的b'和'即可:
test = "é".encode('utf-8') # 用切片去掉开头的b'和结尾的' escaped_str = repr(test)[2:-1] print(escaped_str) # 输出: \xc3\xa9
方法2:手动格式化每个字节
如果你需要更精细的控制(比如十六进制字母大写、自定义分隔符等),可以遍历字节串的每个字节,将其格式化为\xXX的形式:
test = "é".encode('utf-8') # 遍历每个字节,格式化为\x开头的两位十六进制字符串 escaped_str = ''.join(f'\\x{byte:02x}' for byte in test) print(escaped_str) # 输出: \xc3\xa9 # 如果想要大写的十六进制,把02x改成02X escaped_str_upper = ''.join(f'\\x{byte:02X}' for byte in test) print(escaped_str_upper) # 输出: \xC3\xA9
为什么之前的编码解码没用?
你尝试的编码解码操作是在字符和字节之间转换:比如test.decode('utf-8')会把字节b'\xc3\xa9'转回原字符串"é",这和你想要的“获取字节的转义字符串表示”是完全不同的需求,所以自然得不到预期结果。
内容的提问来源于stack exchange,提问作者Snowflake
相关产品推荐
相关产品推荐

