字符編碼:
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ù)。