Tags: Python Python3
對(duì)于從python2.7過來的人藐翎,對(duì)python3的感受就是python3對(duì)文本以及二進(jìn)制數(shù)據(jù)做了比較清晰的區(qū)分叉寂。文本總是Unicode
,由str
類型進(jìn)行表示,二進(jìn)制數(shù)據(jù)使用bytes
進(jìn)行表示窖贤,不會(huì)將str
與bytes
偷偷的混在一起溯香,使得兩者的區(qū)別更加明顯。在python2
中會(huì)明顯發(fā)現(xiàn)不能將str
與bytes
拼接在一起卿泽,也不能在bytes
中查找字符。
然而在實(shí)際應(yīng)用中經(jīng)常需要對(duì)兩者進(jìn)行轉(zhuǎn)換操作以便后續(xù)的代碼能夠順利跑完滋觉。兩者之間的關(guān)如下所示:
str->bytes:encode編碼
bytes->str:decode解碼
字符串通過編碼成為字節(jié)碼签夭,字節(jié)碼通過解碼成為字符串齐邦。
>>> text = '我是文本'
>>> text
'我是文本'
>>> print(text)
我是文本
>>> bytesText = text.encode()
>>> bytesText
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> print(bytesText)
b'\xe6\x88\x91\xe6\x98\xaf\xe6\x96\x87\xe6\x9c\xac'
>>> type(text)
<class 'str'>
>>> type(bytesText)
<class 'bytes'>
>>> textDecode = bytesText.decode()
>>> textDecode
'我是文本'
>>> print(textDecode)
我是文本
對(duì)于這些可以這么理解:
編碼就是將字符串轉(zhuǎn)換成字節(jié)碼,涉及到字符串的內(nèi)部表示覆致。
解碼就是將字節(jié)碼轉(zhuǎn)換為字符串侄旬,將比特位顯示成字符。
其中decode()
與encode()
方法可以接受參數(shù)煌妈,其聲明分別為:
bytes.decode(encoding="utf-8", errors="strict")
str.encode(encoding="utf-8", errors="strict")
其中的encoding
是指在解碼編碼過程中使用的編碼(此處指“編碼方案”是名詞),errors
是指錯(cuò)誤的處理方案宣羊。
詳細(xì)的可以參照官方文檔:
str.encode()
bytes.decode()