python 2
str簡單文字(如ascii編碼)和二進位制資料(bytes)。
unicode
多位元組文字(寬字元,如中文)。
python 3
strunicode文字,包含ascii、utf-8等。
bytes
位元組,用於二進位制資料表示,在一些需要低階資料結構的時候用到,譬如c語言等。
bytearray
bytes型別的乙個變體,它是可變的並且支援原處修改。
編譯碼編碼:
根據乙個想要的編碼名稱,把乙個字串翻譯為其原始位元組形式。
解碼:
根據其編碼名稱,把乙個原始位元組串翻譯為字串形式的過程。
python 2中編譯碼物件的轉換關係
decode encode
str ---------> unicode --------->str
示例:s = '北京'
s.decode('gb2312')
s.decode('gb2312').encode(encoding='utf-8',errors='strict')
python 3中編譯碼物件的轉換關係
decode encode
bytes ------> str(unicode)------>bytes
示例:
s = '北京'
s.encode()
b'\xe5\x8c\x97\xe4\xba\xac' #\為轉義字元,x為十六進製制的標記,u為unicode
s.encode().decode()
檢視物件或平台的編碼環境
1)檢查python預設的編碼
import sys
sys.getdefaultencoding()
reload(sys)
sys.setdefaultencoding('utf8')
2)檢查字元物件的編碼,這個模組識別不准,可以參考鏈結
import chardet
print chardet.detect(html)
識別模組不太準的時候,可以使用decode採用一些常用的中文編碼進行解碼,如gbk,gb2312等。
1)python 3預設採用utf-8的字符集,而python 2預設採用ascii的編碼方式。
2)python 2中存在str和unicode型別,python 3分為bytes和str型別。
3)python 2的str型別可以表示二進位制和字串資料,而python 3中進行了區分
4)python 2和3版本中的編譯碼轉換規則不太一樣
python 2中進行編碼轉換,必須先轉換為unicode物件
python 3由於本身就值unicode,所以可直接進行轉換編碼
5)檔案讀取
python 2
讀取檔案時,採用r和rb讀取檔案檔案時,無區別。
讀取檔案時,直接讀取位元組再通過ascii解碼,如果包含非ascii字元的列印為直接。
read方法輸出指定位元組數。
python 3
讀取文字檔案時,採用r和rb模式讀取輸出是不同的,rb輸出位元組,r輸出字元。
讀取時採用utf-8進行解碼讀取。
read方法輸出字元數。
1)位元組順序標記bom
例如,在utf-16和utf-32編碼中,bom指定大尾還是小尾格式(基本上,是確定乙個位字串的哪一端最重要)。
處理bom的方法
在檔案進行寫入和讀取時使用具體編碼名來處理bom,如下:
>>> open('spam.txt', 'r', encoding='utf-8-sig').read()
'spam\nspam\n' #使用具體的編碼名處理bom
2)轉換編碼
我們總是可以把乙個字串轉換為不同於源字符集預設的一種編碼,但是,我們必須顯式地提供乙個編碼名稱以進行編碼和解碼:
>>>s = 'aäbèc'
>>>s.encode() # default utf-8 encoding
b'a\xc3\x84b\xc3\xa8c'
>>>t = s.encode('cp500') #轉換為cp500編碼
3)原始檔字符集編碼宣告
改變預設的檔案編碼形式,在檔案的第一或第二行宣告。
# -*- coding: latin-1 -*-
1、資料分層表示方法。
檔案層面: 位元組序列,可分為各類編碼形式的位元組序列,如unicode,base64,自定義的位元組流。
python直譯器記憶體層面:unicode碼或位元組碼。
字串內容
那麼,你是否知道字串也是物件,同樣具有方法。這些方法可以完成包括檢驗一部分字串和去除空格在內的各種工作。你在程式中使用的字串都是str類的物件 還真不知道字元是物件。usr bin python filename str methods.py name swaroop this is a strin...
學習總結 Python字串內容
前言 該文章總結了之前學習的python字串內容 2020 01 16 天象獨行 學習python,首先我們需要引入乙個 物件 的概念。關於 物件 的理解將會貫穿整個python的學習。正所謂 萬物皆物件 如果要準確的描述python物件是什麼。我們可以從 身份 型別 值 三個維度來描述。同時這三個...
python字串 Python 字串
建立字串很簡單,只要為變數分配乙個值即可。例如 var1 hello world var2 python runoob python訪問字串中的值python不支援單字元型別,單字元在 python 中也是作為乙個字串使用。python訪問子字串,可以使用方括號來擷取字串,如下例項 例項 pytho...