Python合集之Python字串編碼轉換

2022-06-08 11:45:07 字數 2153 閱讀 5191

最早的字串編碼是美國標準資訊交換碼,即ascii碼,他僅對10個數字,26個大寫英文本母、26個小寫英文本母及一些其他符號進行了編碼。ascii碼最多只能表示256個符號,每個符號佔乙個位元組。隨著資訊科技的發展,各國文字都需要進行編碼,於是出現了gbk、gb2312、utf-8編碼等。其中gbk和gb2312是我國制定的中文編碼標準,使用乙個位元組表示英文本母,2個位元組表示中文字元。而utf-8是我國通用的編碼,對全世界所有國家用到的字元都進行了編碼。utf-8採用乙個位元組表示英文本元、3個位元組表示中文。在python3.x中。預設採用的編碼格式為utf-8,採用這種編碼有效地解決了中文亂碼的問題。

在python中,有兩種常用的字串型別,分別是str和bytes。其中str表示unicode字元(ascii碼或者其他)bytes表示二進位制資料(包括編碼的文字)。這兩種型別的字串不能拼接在一起使用。通常情況下,str在記憶體中以unicode表示,乙個字元對應諾幹個位元組。但是如果在網路上傳輸,或者儲存到磁碟上,就需要把str轉換為位元組型別,即bytes型別。

注:bytes型別的資料時帶有b字首的字串(用單引號或者雙引號表示)例如 b'\xd2\xb0'和'bmr'都是bytes型別的資料。

str型別和bytes型別之間可以通過encode()和decode()方法進行轉換,這兩個方法是互逆的過程。

encode()方法為str物件方法,用於將字串轉換為二進位制資料(即bytes)也稱為編碼,其語法格式如下:

str.encode([encoding="

utf-8

"][,errors="

strict"])

引數說明:

str:表示要進行轉換的字串

encoding="

utf-8

":可選引數,用於指定進行轉碼時採用的字元編碼,預設為utf-8,如果想使用簡體中文,也可以設定為gb2312。

當只有乙個引數時,也可省略前面的encoding=,直接寫編碼。

errors="

strict

":可選引數,用於指定錯誤處理方式,其可選址值strict(遇到非法字元就丟擲異常)

ignore(忽略非法字元)、

replace(用?替換非法字元)或

xmlcharrefreplace(使用xml的字元引用)等,預設為strict。

注:在使用encode()方法時,不會修改原字串,如果需要修改原字串,需要對其進行重新賦值。

例如:

verse='

野渡無人舟自橫

'byte=verse.encode('

gbk'

)print('

原字串:

',verse)

print('

轉換後:

',byte)

decode()方法為bytes物件的方法,用於將二進位制轉換為字串,即將使用encode()方法轉換的結果再轉換為字串,也稱為「解碼」,語法格式如下:

bytes.decode([encoding="

utf-8

"][,errors="

strict"])

引數說明:

bytes:表示要進行轉為二進位制資料,通過是encode()方法轉換後的結果。

encoding="

utf-8

":可選引數,用於指定進行解碼時採用的字元編碼預設為utf-8,如果想使用簡體中文,可以設定為gb2312。

當只有乙個引數時,可以省略前面的encoding=,直接寫編碼。

errors="strict":可選引數,用於指定錯誤處理方式,其可選址值strict(遇到非法字元就丟擲異常)

ignore(忽略非法字元)、

replace(用?替換非法字元)或

xmlcharrefreplace(使用xml的字元引用)等,預設為strict。

注:在使用decode()方法時,不會修改原字串,如果需要修改原字串,需要對其進行重新賦值。

例如:上面示例中編碼後得到的結果,在這裡進行解碼:

print('

解碼後:

',byte.decode('

gbk'))

花絮:

Python合集之Python字典(四)

ps 前段時間因為年底時間比較繁忙,沒有及時更新,望大家見諒,今天趁著大年初一趕緊給大家更新一波。由於字典是可變序列,所以可以隨時在字典中新增 鍵 值 對 向字典中新增元素的語法格式如下 dictionary key value 引數說明 dictionary 表示字典名稱 key 表示要新增元素的...

Python合集之Python元組(一)

在上一節的合集中,我們了解了python的二維列表的相關知識,本節我們將進一步了解一下python元組的相關知識。元組是python中另一種重要的序列結構,與列表類似,也是由一系列按特定順序排列的元素組成,但是他是不可變序列。因此,元組也可以稱為不可變的列表。在形式上,元組的所有元素都放在 中,兩個...

Python合集之Python列表(五)

在上一節的合集中,我們了解了python 列表中元素的統計及計算的相關知識,本節我們將進一步了解一下python列表中元素的排序的相關知識。在實際開發中,經常需要對列表進行排序。python中提供了兩種常用的對列表進行排序的方法 使用列表物件的sort 方法,使用內建的sorted 函式。列表物件提...