python字符串和編碼

字符編碼:

8個比特(bit)作為一個字節(jié)(byte),一個字節(jié)最大整數(shù)255(二進制11111111=十進制255)
python提供了ord()函數(shù)獲取字符的整數(shù)表示,chr()函數(shù)把編碼轉(zhuǎn)換為對應(yīng)的字符,注意是字符不是字符串。
>>>ord('A')
65
>>>chr(66)
'B'
如果知道字符的整數(shù)編碼,還可以用十六進制寫str
>>>'\u4e2d\u6587'
'中文'
由于python的字符串類型是str,在內(nèi)存中以unicode表示,一個字符對應(yīng)若干個字節(jié),如果要在網(wǎng)絡(luò)上傳輸,或者保存在硬盤上,就需要把str變?yōu)橐宰止?jié)為單位的bytes。
以unicode表示的str通過encode()方法可以編碼為指定的bytes。但要注意編碼范圍,否則會報錯
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
'中文'.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
因為中文編碼的范圍超過了ascii編碼范圍,所以報錯。
反過來,如果我們從網(wǎng)絡(luò)或硬盤上讀取了字節(jié)流bytes,要把bytes變?yōu)閟tr就需要用decode()方法。
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
str1.decode('gb2312')表示將gb2312編碼的字符串轉(zhuǎn)換成unicode編碼
str2.encode('gb2312')表示將unicode編碼的字符串轉(zhuǎn)換成gb2312編碼

字符串格式化符號含義:

符號 說明
%c 格式化字符及其ASCII碼
%s 格式化字符串
%d 格式化整數(shù)
%o 格式化無符號八進制數(shù)
%x 格式化無符號十六進制數(shù)
%X 格式化無符號十六進制數(shù)(大寫)
%f 格式化定點數(shù),可指定小數(shù)點后的精度
%e 用科學(xué)計數(shù)法格式化定點數(shù)
%E 作用同%e,用科學(xué)計數(shù)法格式化定點數(shù)
%g 根據(jù)值的大小決定使用%f活%e
%G 作用同%g,根據(jù)值的大小決定使用%f或者%E

字符串轉(zhuǎn)義字符含義

符號 說明
' 單引號
" 雙引號
\a 發(fā)出系統(tǒng)響鈴聲
\b 退格符
\n 換行符
\t 橫向制表符(TAB)
\v 縱向制表符
\r 回車符
\f 換頁符
\o 八進制數(shù)代表的字符
\x 十六進制數(shù)代表的字符
\0 表示一個空字符
\\ 反斜杠
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容