首頁 >後端開發 >Python教學 >python2和python3字串區別

python2和python3字串區別

(*-*)浩
(*-*)浩原創
2019-06-28 14:54:322364瀏覽

Python2中,字串無法完全地支援國際字元集和Unicode編碼。為了解決這種限制,Python2對Unicode資料使用了單獨的字串類型。要輸入Unicode字串字面量,要在第一個引號前加上'u'。 Python2中普通字串其實就是已經編碼(非Unicode)的位元組字串。在Python3中,不必加入這個前綴字符,否則是語法錯誤,這是因為所有的字串預設已經是Unicode編碼了。

python2和python3字串區別

但是python3中多出一個字串(推薦學習:Python影片教學

type(b'132') => byte型

而在在python2中這樣寫就會報錯

所以顯而易見,decode和encode的使用也會有很大的差異

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

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

以python3為例:

src = ‘你好世界’

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

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

此時src已經是byte型了,如果想再轉回str,直接使用:

src = src .decode()

另外,python3中open函數加上了encoding參數,且預設為utf-8,即開啟的檔案據柄進行read或write時,只接收包含unicode格式的str字元穿。

此時如果傳入二進位檔案的話,則會報錯,例如:

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

如果想要讀寫二進位檔案的話,需要指定開啟方式為'wb' 或'rb'

另外,如果抓取網頁時,發現無法正常顯示,則需要對內容進行轉碼。

更多Python相關技術文章,請造訪Python教學欄位學習!

以上是python2和python3字串區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn