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