一、Bytes類型
在Python3以后,字符串和bytes類型徹底分開了。字符串是以字符為單位進行處理的,bytes類型是以字節為單位處理的。
bytes數據類型在所有的操作和使用甚至內置方法上和字符串數據類型基本一樣,也是不可變的序列對象。
bytes對象只負責以二進制字節序列的形式記錄所需記錄的對象,至于該對象到底表示什么(比如到底是什么字符)則由相應的編碼格式解碼所決定。Python3中,bytes通常用于網絡數據傳輸、二進制圖片和文件的保存等等。可以通過調用bytes()生成bytes實例,其值形式為 b'xxxxx',其中 'xxxxx' 為一至多個轉義的十六進制字符串(單個 x 的形式為:\x12
,其中\x為小寫的十六進制轉義字符,12為二位十六進制數)組成的序列,每個十六進制數代表一個字節(八位二進制數,取值范圍0-255),對于同一個字符串如果采用不同的編碼方式生成bytes對象,就會形成不同的值.
b = b'' # 創建一個空的bytes b = byte() # 創建一個空的bytes b = b'hello' # 直接指定這個hello是bytes類型 b = bytes('string',encoding='編碼類型') #利用內置bytes方法,將字符串轉換為指定編碼的bytes b = str.encode('編碼類型') # 利用字符串的encode方法編碼成bytes,默認為utf-8類型bytes.decode('編碼類型'):將bytes對象解碼成字符串,默認使用utf-8進行解碼。
對于bytes,我們只要知道在Python3中某些場合下強制使用,以及它和字符串類型之間的互相轉換,其它的基本照抄字符串。
二、Bytes類型轉換
1.Bytes與字符串的相互轉換
string = b'xxxxxx'.decode()
?直接以默認的utf-8編碼解碼bytes成string
b = string.encode()
?直接以默認的utf-8編碼string為bytes
2.Bytes轉換為字典類型
Bytes本身是一個字典形式存儲的數據,要想把這種存儲形式的數據轉換為字典類型
1)將Bytes 轉換為 Strig
c=b.decode()
2)將String轉換為字典
info=eval(c)
3.eval函數
eval函數就是實現list、dict、tuple與str之間的轉化
str函數把list,dict,tuple轉為為字符串
# 字符串轉換成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
b = eval(a)
print(b)
# 字符串轉換成字典
a = "{1: 'a', 2: 'b'}"
print(type(a))
b = eval(a)
print(type(b))
print(b)
# 字符串轉換成元組
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))
b=eval(a)
print(type(b))
print(b)
?
?
?
?
?
參考博客
python--數據類型bytes
Python中eval函數的作用