20200917 Python學習筆記3

2022-08-11 11:15:12 字數 2563 閱讀 9471

編碼

ascii編碼乙個位元組

unicode編碼通常兩個位元組

字母a用ascii編碼是十進位制的65,二進位制的01000001

字元0用ascii編碼是十進位制的48,二進位制的00110000,注意字元'0'和整數0是不同的

漢字中已經超出了ascii編碼的範圍,用unicode編碼是十進位制的20013,二進位制的01001110 00101101

utf-8編碼是針對unicode的一種可變長度字元編碼。它可以用來表示unicode標準中的任何字元,而且其編碼中的第乙個位元組仍與ascii相容,使得原來處理ascii字元的軟體無須或只進行少部份修改後,便可繼續使用。

ord()函式獲取字元的整數表示

chr()函式把編碼轉換為對應的字元

>>> ord('u')

117>>> ord('u')

85>>> ord('we')

traceback (most recent call last):

file "", line 1, in typeerror: ord() expected a character, but string of length 2 found

>>> chr(89)

'y'>>> chr(85)

'u'>>>

python的字串型別是str,在記憶體中以unicode表示,乙個字元對應若干個位元組。如果要在網路上傳輸,或者儲存到磁碟上,就需要把str變為以位元組為單位的bytes

python對bytes型別的資料用帶b字首的單引號或雙引號表示

'abc'和b'abc',前者是str,後者雖然內容顯示得和前者一樣,但bytes的每個字元都只占用乙個位元組

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

例子:

>>> 'we'.encode('ascii')

b'we'

>>> b'we'

b'we'

>>> '漢字'.encode('utf-8')

b'\xe6\xb1\x89\xe5\xad\x97'

>>> 'we'.encode('utf-8')

b'we'

>>> '漢字'.encode('ascii')

traceback (most recent call last):

file "", line 1, in unicodeencodeerror: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

>>>

在bytes中,無法顯示為ascii字元的位元組,用 \x## 顯示。反過來,如果我們從網路或磁碟上讀取了位元組流,那麼讀到的資料就是bytes。

把bytes變成str,要用到decode()方法

>>> b'asd'

b'asd'

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

'asd'

>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')

'中文'

如果bytes中包含無法解碼的位元組,decode() 方法會報錯,如果位元組只有一小部分,可以傳入errors='ignore' 忽略錯誤的位元組

>>> b'\xe4\xb8\xad\xff'.decode('utf-8',errors='ignore')

'中'>>> b'\xe4\xb8\xad\xff'.decode('utf-8')

traceback (most recent call last):

file "", line 1, in unicodedecodeerror: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

>>>

len()函式可以計算str包含多少個字元

>>> len('big')

3>>> len('今晚打老虎')

5>>>

len()函式:返回專案(字元、位元組、列表)的長度或個數

len()函式計算的是str的字元數,如果換成bytes,len()函式就計算位元組數。

>>> len('iop')

3>>> len('aaa')

3>>> len(b'\xe4\xb8\xad\xe6\x96\x87')

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

6>>>

當python直譯器讀取源**時,為了讓它按utf-8編碼讀取,我們通常在檔案開頭寫上這兩行:

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

第一行注釋是為了告訴linux/os x系統,這是乙個python可執行程式,windows系統會忽略這個注釋;

第二行注釋是為了告訴python直譯器,按照utf-8編碼讀取源**,否則,你在源**中寫的中文輸出可能會有亂碼。

學python的遊戲app 學Python

基本內容 學python軟體中的python教學內容涵蓋基礎概念 控制結構 函式模組 檔案操作 面試物件 函式程式設計 異常處理 正規表示式。通過簡短的課程和有趣的小測驗進行python學習衝浪。在突破乙個個學習小關口,展示你的it程式設計技能。python教程,講解了python基礎知識,也介紹了...

手機學python好嗎 學Python怎麼樣?

第一,更高的工作效率 這兩年python在業內大火的原因除了雲計算幫python帶來的熱潮之外,更多的是本身的特性。目前網際網路創業熱情高漲,創業者和投資者都希望投資回報週期快。因此,一門開發效率極高的語言就此進入開發者眼簾,眾多創業公司 python做為開發語言,催生了python在國內大熱的現象...

女生學python 女生適合學Python嗎?

學習程式設計對於性別沒有什麼特別強制的要求,不管是男生還是女生,都是可以的。可能在圈外行業來說,從事it行業的似乎都是格仔襯衫,髮量少且髮際線高,駝背戴眼鏡,經常揹著雙肩包,中年油膩大叔,不懂浪漫沒有情調等等,這些都是程式設計師的標籤。對於圈外人來說,程式設計師可能是西裝革履,品質貓屎咖啡,喝著下午...