py3 bytes和str互相转换方法

本文简单整理一下各种情况下,bytes和str转换的方法。

一、编/解码

a = "测试用例".encode("utf-8")
print(a, type(a))
b = a.decode("utf-8")
print(b, type(b))

没什么好说的,正常的bytes都是str编码而成的,正常编/解码就成。

二、强制转换

参考:https://www.zhihu.com/question/276855318/answer/390122533

逼不得已的情况下,可以使用强制转换

Hex或Unicode反斜杠转义存在于字符串中使用codecs.escape_decode恢复

# 有些加密是对字节串加密的
# 通常加密后的结果无法解码,因为是乱码
# 这里假设一个乱码字节串
a = b'\xabA\x9f_\xf3\t\x06I'
print(a, type(a))
b = str(a)
print(b, type(b))
import codecs
aa = codecs.escape_decode(b[2:-1], 'hex-escape')[0]
print(aa, type(aa))
print(aa == a)

结果:

 

dlc、字符str转成编码后的str

用json库的dumps和loads进行转化

import json
s = '\\u9500\\u552e'
print(json.loads(f'"{s}"'))

 

posted @ 2020-03-08 16:40  二律背反GG  阅读(748)  评论(0编辑  收藏  举报