Python字串操作集錦之字串編碼解碼函式

2021-07-04 10:11:44 字數 1455 閱讀 5127

15、字串的編碼和解碼的函式

15.1 str.encode([encoding,[errors]]):字串編碼

將unicode編碼轉換成其他編碼的字串,如str2.encode(『gbk2312』),表示將unicode編碼的字串str2轉換成gbk2312的編碼。

encoding可以有多種值,比如gb2312 、gbk、 gb18030、big5、base64等。

errors預設值為」strict」,意思是unicodeerror。可能的值還有』ignore』, 『replace』, 『xmlcharrefreplace』, 『backslashreplace』 和所有的通過codecs.register_error註冊的值。這一部分內容涉及codecs模組。

>>> 

'abd'.encode('base64')

'ywjk\n'

15.2 str.decode([encoding,[errors]]):字串解碼

將其他編碼的字串解碼成unicode編碼的字串,如str1.decode(『gbk』),表示將gbk編碼的字串str1解碼成unicode編碼。

>>> 

'ywjk\n'.decode('base64')

'abd'

字串在python2.x版本內部是以ascii編碼表示的,python3.x預設是unicode編碼。因此,有時候會遇到編碼轉換的問題,通常是以unicode作為中間編碼,即先將其他編碼的字串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

因此在轉碼時,一定要弄明白字串str是什麼編碼,然後decode成unicode,然後再encode成其他編碼。**中字串的預設編碼與**檔案本身的編碼一致。

如果字串是這樣定義的:str1 = u』abcd』

則該字串的編碼就被指定成為unicode了,此時如果再對其解碼的話,就會出錯。因此,這種情況下,只需要直接使用encode方法進行編碼即可。

通常在編碼前需要對字串的是否是unicode編碼進行判斷:

isinstance(str1, unicode)#判斷字串是否是unicode編碼

有時候我們也需要檢視一下系統的編碼:

import sys

print sys.getdefaultencoding() #獲取系統的編碼

編碼和解碼時,可以用第二個引數控制錯誤處理的策略,預設的引數就是strict,代表遇到非法字元時丟擲異常;

如果設定為ignore,則會忽略非法字元;

如果設定為replace,則會用?取代非法字元;

如果設定為xmlcharrefreplace,則使用xml的字元引用。

Python字串操作集錦之字串對映表

字串的對映中,包含兩個函式maketrans 和translate 並且通常是這兩個函式配合使用 這兩函式都是string中的模組,所以使用前需要匯入string包。string.maketrans from,to 返回乙個256個字元組成的對映表,其中from中的字元被一一對應地轉換成to,所以f...

Python函式操作集錦之字串測試 判斷函式

13 字串的測試 判斷函式 這一類函式在string模組中沒有,這些函式返回的都是bool值 即true或false 13.1 str.startswith str是否以指定的字串開頭 函式原型 str.startswith prefix start end 引數說明 str 表示需要判斷的字串,即...

Python之字串操作

每種語言都有字串這個資料型別,但是每種語言的字串操作都不盡相同,python相對於其他語言,字串操作其實有明顯的優勢,簡單明瞭。定義乙個字串 name phone 將首字母變成大寫 name.capitalize 格式化字串,不足的用其他標識填補 name.center 50.把tab轉成若干個空格...