字符編碼

 

Unicode把所有語言都統一到一套編碼裏,最常用的是用兩個字節表示一個字符(如果要用到非常偏僻的字符,就需要4個字節)。

ASCII編碼是1個字節,而Unicode編碼通常是2個字節。

UTF-8編碼把一個Unicode字符根據不同的數字大小編碼成1-6個字節,常用的英文字母被編碼成1個字節,漢字通常是3個字節,只有很生僻的字符纔會被編碼成4-6個字節。

 

ord()函數獲取字符的整數表示,chr()函數把編碼轉換爲對應的字符。

>>> ord("大")
22823

>>> chr(22823)
'大'

由於Python的字符串類型是str,在內存中以Unicode表示,一個字符對應若干個字節。如果要在網絡上傳輸,或者保存到磁盤上,就需要把str變爲以字節爲單位的bytes

Python對bytes類型的數據用帶b前綴的單引號或雙引號表示:

x =b'ABC'

要注意區分'ABC'b'ABC',前者是str,後者雖然內容顯示得和前者一樣,但bytes的每個字符都只佔用一個字節。

以Unicode表示的str通過encode()方法可以編碼爲指定的bytes

>>> 'ABC'.encode('ascii')
b'ABC'

從網絡或磁盤上讀取了字節流,那麼讀到的數據就是bytes。要把bytes變爲str,就需要用decode()方法:

>>> b'ABC'.decode('ascii')
'ABC'

要計算str包含多少個字符,可以用len()函數,如果換成byteslen()函數就計算字節數。

>>> len('中文')
2
>>> len('中文'.encode('utf-8'))
6

 

爲了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;

第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

申明瞭UTF-8編碼並不意味着你的.py文件就是UTF-8編碼的,必須並且要確保文本編輯器正在使用UTF-8 without BOM編碼。

格式化

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

%運算符就是用來格式化字符串的。在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?佔位符,後面就跟幾個變量或者值,順序要對應好。如果只有一個%?,括號可以省略。

來源:

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431664106267f12e9bef7ee14cf6a8776a479bdec9b9000

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章