這篇文章帶給大家的內容是關於python中轉換模組codecs的講解(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
#編碼轉換時,通常需要以unicode作為中間編碼,也就是先將其他編碼的字串解碼(decode)成unicode ,再從unicode編碼(encode)成另一種編碼。
str1.decode('gb2312') #将gb2312编码的字符串转换成unicode编码 str2.encode('gb2312') #将unicode编码的字符串转换成gb2312编码
注意事項:
s=‘中文’ 如果是在utf8的檔案中,該字串就是utf8編碼,如果是在gb2312的檔案中,則其編碼為gb2312。在這種情況下,要進行編碼轉換,都需要先用decode方法轉換成unicode編碼,再使用encode方法轉換成其他編碼。
在沒有指定特定的編碼方式時,都是使用的系統預設編碼所建立的程式碼檔案。
如果字串是這樣定義: s=u’中文’ 則該字串的編碼就被指定為unicode了,即python的內部編碼,而與代碼檔案本身的編碼無關。只需要直接使用encode方法將其轉換成指定編碼即可
如果一個字串已經是unicode了,再進行解碼則將出錯,因此通常要對其編碼方式是否為unicode進行判斷isinstance(s, unicode ) #用來判斷是否為unicode
(1)對於我們經常使用的記事本,“文件” -> “另存為”,可查看到當前的編碼方式。
(2)用notepad 打開,點選「選單列」 -> 「格式」可以檢視到。
(3)UltraEdit:
不同編碼的文本,是根據文本的前兩個字節來定義其編碼格式的,定義如下:
ANSI: 無格式定義;
Unicode: 前兩個位元組為FFFE;
Unicode big endian: 前兩字節為FEFF;
UTF-8: 前兩字節可以這樣為兩個字節就這樣為兩個字節;判定出文件的具體格式了。
原有編碼-> 內部編碼- > 目的編碼
import sys print(sys.maxunicode)如果輸出的值為65535,那麼就是UCS-2,如果輸出是1114111就是UCS-4編碼。 轉換成內部碼:
c = "风卷残云" print(type(c)) c = bytes(c,encoding='utf-8') print(type(c)) print(c) b = codecs.decode(c, "utf-8") #与c.decode()等效 print(type(b)) print(b) print(c.decode())輸出:
<class 'str'> <class 'bytes'> b'\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91' <class 'str'> 风卷残云 风卷残云3、codecs模組codecs專門用來當作編碼轉換。透過它的介面是可以擴展到其他關於程式碼方面的轉換。 在python3.x中可以直接將bytes類型的資料轉換成其他編碼格式,不用手動先轉換成unicode。
import codecs a = "我爱你" # 创建utf-8编码器 look = codecs.lookup('utf-8') type(a) a = bytes(a,encoding='utf-8') b = look.decode(a) print(b)輸出:
('我爱你', 9)傳回的元組中b[0]是數據,b[1]是長度。 ** 用codecs提供的open方法來指定開啟的檔案的語言編碼,它會在讀取的時候自動轉換為內部unicode**
f = codecs.open(filepath, 'r', 'utf8')讀取方式有很多種,這裡的f是可以用for迴圈遍歷的,當然也可以直接用readline或readlines函數方法來讀取。
#for i in f: # print(i) #f.readline() #f.read() #f.readlines()
以上是python中轉換模組codecs的講解(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!