溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python2和python3字符串區(qū)別有哪些

發(fā)布時間:2020-09-09 14:25:51 來源:億速云 閱讀:180 作者:小新 欄目:編程語言

這篇文章主要介紹了python2和python3字符串區(qū)別有哪些,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

 Python2中,字符串無法完全地支持國際字符集和Unicode編碼。為了解決這種限制,Python2對Unicode數(shù)據(jù)使用了單獨的字符串類型。要輸入Unicode字符串字面量,要在第一個引號前加上'u'。Python2中普通字符串實際上就是已經(jīng)編碼(非Unicode)的字節(jié)字符串。在Python3中,不必加入這個前綴字符,否則是語法錯誤,這是因為所有的字符串默認已經(jīng)是Unicode編碼了。

python2和python3字符串區(qū)別有哪些

但是python3中多出一種字符串

type(b'132') => byte型

而在python2中這樣寫就會報錯

所以顯而易見,decode和encode的使用也會有很大的區(qū)別

python2中的decode是將str型轉換為unicode型

python3中的decode是將byte型轉換為str型

以python3為例:

src = ‘你好世界’

此時的str為 str類型,如果需要把它轉乘byte類型,可以通過:

src =  src.encode('utf-8')

此時src已經(jīng)是byte類型了,如果想再轉回str,直接使用:

src = src .decode()

另外,python3中open函數(shù)加上了encoding參數(shù),且默認為utf-8,即打開的文件據(jù)柄進行read或者write時,只接收包含unicode格式的str字符穿。

此時如果傳入二進制文件的話,則會報錯,例如:

with open('a.bin', 'w') as f:
f.write('xxx')

如果想要讀寫二進制文件的話,需要指定打開方式為‘wb’ 或者 ‘rb’

另外,如果抓取網(wǎng)頁時,發(fā)現(xiàn)無法正常顯示,則需要對內(nèi)容進行轉碼。

感謝你能夠認真閱讀完這篇文章,希望小編分享python2和python3字符串區(qū)別有哪些內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI