如何将含转义字节序列的字符串转换为对应bytes对象?
包含转义字节序列的字符串转bytes对象解决方案
你的问题核心是:当前字符串中的\xfa这类转义序列已经被Python解析为对应Unicode字符,而非字面转义文本,所以打印显示乱码,无法直接转换为目标bytes对象。以下是两种可行方案:
方案1:利用编码转换还原字节
通过unicode-escape编码将字符转回转义形式,再通过latin-1映射回原始字节:
s = '\xfa\x7f\xe5<\xcf\xda\xf0v\xf1\x94\xd8q7w,\x1d\x1d\x9eU\xf6O\x9fnW~\xf0\xdd\xad\xd2\xf7\x13\nA\xbb\xda\xa2rge\xb02_3\xcb\x81\x03\xcb \x1c\x86\xbb\n\x04r\xcdCKQ\x9ew\xe7\xf1{\x08' result = s.encode('unicode-escape').decode('latin-1').encode('latin-1') print(result)
执行后将输出你需要的b'\xfa\x7f\xe5<\xcf\xda\xf0v\xf1\x94\xd8q7w,\x1d\x1d\x9eU\xf6O\x9fnW~\xf0\xdd\xad\xd2\xf7\x13\nA\xbb\xda\xa2rge\xb02_3\xcb\x81\x03\xcb \x1c\x86\xbb\n\x04r\xcdCKQ\x9ew\xe7\xf1{\x08'。
方案2:基于原始字面量转换
若能获取未被解析的原始字符串(带r''标记),可直接转换:
raw_str = r'\xfa\x7f\xe5<\xcf\xda\xf0v\xf1\x94\xd8q7w,\x1d\x1d\x9eU\xf6O\x9fnW~\xf0\xdd\xad\xd2\xf7\x13\nA\xbb\xda\xa2rge\xb02_3\xcb\x81\x03\xcb \x1c\x86\xbb\n\x04r\xcdCKQ\x9ew\xe7\xf1{\x08' result = bytes(raw_str, 'utf-8').decode('unicode-escape').encode('latin-1') print(result)
原理说明
unicode-escape编码会将Unicode字符转换为对应的转义字节序列(如ú转为\xfa)。latin-1是单字节编码,能保证每个字节与Unicode字符一一映射,不会丢失信息。- 最后通过
latin-1编码,将字符还原为原始字节值。
内容的提问来源于stack exchange,提问作者Rararat
相关产品推荐
相关产品推荐

