python3之編碼詳解

2021-08-23 14:43:47 字數 1910 閱讀 9551

一,python2與python3的區別

1)python2可以不用括號()

python3必須加括號

2)python2中有range()有序列表,xrange()生成器

python3中只有range()

3)python2中輸入是raw_input()

python3中輸入是input()

二,  =    ==    is  三者的區別

1)  =           是賦值

==          是比較,值是否相等

is          比較的是記憶體位址

id(內容)   列印的是內容的id       print(id1(內容),id2(內容))

is 與 == 區別:

is 用於判斷兩個變數引用物件是否為同乙個, == 用於判斷引用變數的值是否相等。

三,小資料池

小資料池是int和str在一定範圍內共用乙個資料池,範圍-1— -256。小資料池是為了節省記憶體。

1)str:不含有特殊字元的共用

ps:  s1 = 『alex』     

s2 = 'alex'

print(s1 is s2)

結果是true

2)str: 『乙個字元』*小於等於20的數字,還是共用,如果是大於20的就不共用了。

多個字元不論乘什麼數字,都不共用

3)剩下的list  dict  taple  set等都沒有小資料池概念

四,編碼

ascii碼:         只有英文本母和特殊字元,乙個位元組是8位

unicode碼:  乙個字元是32位,乙個字母4個位元組

乙個漢字是32位,乙個漢字4個位元組

utf-8:           乙個字母是8位,乙個字母1個位元組

乙個漢字是24位,乙個漢字3個位元組

gbk;             乙個字母是8位,乙個字母1個位元組

乙個漢字是16位,乙個漢字2個位元組

1)各個編碼之間的二進位制不能互相識別,會亂碼。

uncode占得記憶體太多,所以不能傳輸和儲存。

utf-8,gbk,utf-16,utf-32,gb2312,ascii等都可以儲存和傳輸。

2)python3在記憶體中是用unicode編碼方式儲存的,所以不能直接儲存和傳輸,要轉化為其他編碼進行儲存和傳輸。

五,bytes型別

bytes型別也是一種資料型別。

bytes不是用unicode方式編碼的,所以可以儲存和傳輸。

bytes的編碼方式是utf-8,gbk,ascii,gb2312等。

1)英文

在python3中:str表現形式; s = ''alex''           str編碼形式:unicode

在bytes中:    str表現形式: s = b''alex''          str編碼形式:utf-8,gbk,ascii,gb2312等

中文在python3中:str表現形式; s = ''中國''          str編碼形式:unicode

在bytes中:    str表現形式: s = b''x\e91\e91e91\e91e91\e91         str編碼形式:utf-8,gbk,ascii,gb2312等

六,編碼  encode

1)將str>>>bytes    可以指定編碼方式       

s1 = 『alex』

s11 = s1.encode('utf-8')

print(s11)

表面是將str轉化為bytes,實際內部是將unicode轉化為utf-8,gbk,ascii,gb2312等

python3編碼宣告 python3編碼問題彙總

這兩天寫了個監測網頁的爬蟲,作用是跟蹤乙個網頁的變化,但執行了一晚出現了乙個問題。希望大家不吝賜教!我用的是python3,錯誤在對html response的decode時丟擲,原樣為 response urllib.urlopen dsturl content response.read dec...

python3編碼解碼

輸入編碼 輸入編碼需要由二進位制轉為unicode,輸入介質 原始碼檔案 終端 檔案 網路等 python3預設是使用utf 8編碼對輸入的二進位制值轉為unicode。也就是說如果輸入介質沒有指定編碼,python3直譯器就預設把你的原始檔看成是utf 8編碼。呼叫sys.getdefaulten...

Python3編碼問題

python3最重要的進步之一就是解決了python2中字串與字元編碼的問題。python2字串的缺陷如下 而python3則把系統預設編碼設定為了 utf 8 import sys sys.getdefaultencoding utf 8 之後,文字字元和二進位制資料分別用str和bytes表示。...