編碼
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行業的似乎都是格仔襯衫,髮量少且髮際線高,駝背戴眼鏡,經常揹著雙肩包,中年油膩大叔,不懂浪漫沒有情調等等,這些都是程式設計師的標籤。對於圈外人來說,程式設計師可能是西裝革履,品質貓屎咖啡,喝著下午...