Python基礎(chǔ)-str、bytes、unicode區(qū)別介紹

環(huán)境: Centos7 + Python3.5.4

1.在Python中也存在字節(jié)型數(shù)據(jù)(bytes)和字符型數(shù)據(jù)(unicode),不過這兩者在Python2和Python3中卻有點(diǎn)不同。
Py2 和 Py3 都用 str 類型來表示字符串,不過在Py2中,str跟bytes是等價(jià)的;在Py3中,str跟unicode是等價(jià)的。另外,值得注意的是,在Py2中,bytes跟unicode是等價(jià)的;在Py3中則是不等的。詳情見下圖或者在Python命令行嘗試。

Python2


image

Python3


image

2.字節(jié)型轉(zhuǎn)換為字符型可以理解為解碼(decode),反之則是編碼(encode)。下面只展示Python3的情況
首先,我們可以通過 locale 來查看本機(jī)的默認(rèn)編碼方式,貌似Linux默認(rèn)是utf-8,windows默認(rèn)是gbk。

>>>import locale
>>>locale.getpreferredencoding(False)

其次,我們將嘗試 字符->字節(jié)

>>>a = '學(xué)習(xí)'
>>>ae = a.encode('utf-8')
b'\xe5\xad\xa6\xe4\xb9\xa0'

字節(jié)->字符

>>> ae.decode('utf-8')
'學(xué)習(xí)'

最后,因?yàn)樵赑y3中,字符串與unicode是等價(jià)的,所以字符串是沒有decode方法的,如果調(diào)用該方法則會(huì)報(bào)錯(cuò)

>>> a.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容