python3自學筆記3 字串和編碼

2021-07-23 19:36:53 字數 2025 閱讀 2685

摘錄自:廖雪峰python3.5教程

內容:字串和編碼

目錄:一、字元編碼的發展

二、python的字串

正文:一、字元編碼的發展

美國人在發明計算機編碼時只將大小寫英文本母、數字和一些符號共127個字母編碼到計算機中,稱為ascaii編碼。最早的計算機以8個位元為乙個位元組,所以乙個位元組能表示最大的整數是255。顯然,在處理漢字的時候乙個位元組是遠遠不夠的。為了對漢字進行編碼,並且漢字編碼還不與acsii碼重複,中國制定了gb2312編碼。不單是中國,世界上其他國家都制定了自己的編碼標準,就不可避免的出現重複,導致在多語言混合的文字中出現亂碼。為了解決這個問題國際組織制定了unicode把所有的語言都統一到一套編碼中,俗稱統一碼、萬國碼。

ascaii碼和unicode碼之間的區別是:ascii碼只佔乙個位元組,unicode通常為兩個位元組,生僻字可能需要4個位元組。在ascaii碼字元前補0就能夠轉換為同樣字元含義的unicode碼。

如果都使用英文進行編碼時,unicode編碼比ascii編碼多一倍的儲存空間,所以出現了將unicode編碼轉換為可變長編碼的utf-8編碼。utf-8將字元編碼為1-6個位元組,常用的英文本母被編碼成1個位元組,漢字通常為3個位元組,很生僻的字元被編碼為4-6個位元組,所以對於純英文本元文字,utf-8編碼節省了大量的空間。

ascii編碼實際上成為了utf-8編碼的一部分,因此,大量只支援ascii編碼的軟體可以在utf-8編碼下繼續工作。

計算機系統通用的字元編碼工作方式:在計算機記憶體中統一使用unicode編碼,當需要保持到硬碟或者需要傳輸的時候,就轉換為utf-8編碼。用記事本編輯的時候,從檔案讀取的utf-8字元被轉換為unicode字元到記憶體中,編輯完成儲存的時候再把unicode轉換為utf-8儲存到檔案。

二、python的字串

在python3中,字串以unicode編碼,也就是說python的字串支援多語言。

ord()函式獲取單個字元的整數表示,ord(『a』)回車 65

chr()函式將整數轉換為對應的字元,chr(『66』) 回車 『b』

若知道某個字元的16進製制整數,可以通過'\u***x'表示該字元。例如'\u0041' 回車 『a』

python中str為unicode編碼,如需在網路上傳輸或者儲存到磁碟上,就需要把str轉換成以位元組為單位的bytes。

bytes型別的資料用b字首的單引號或者雙引號表示,若x = b『abc』

以unicode表示的str可以通過encode()轉換為其他編碼,『abc』.encode(『ascii』)回車 b『abc』

要從網路或者磁碟上讀取位元組流就需要將bytes通過decode()轉變成str,b『abc』.decode(『ascii』)回車 『abc』

計算字串含有多少字元,len(『abc』)回車 3;len(『中文』)回車 2

在操作字串時,為了避免亂碼,應當始終堅持使用utf-8編碼對str和bytes進行轉換。

在儲存源**是 ,需要指定儲存為utf-8編碼。注:確保文字編輯器正在使用utf-8 withoutbom編碼。除此之外,當python直譯器讀取源**時,為了讓它按utf-8編碼,通常在檔案開頭寫上一下兩行:

#!/usr/bin/env python 3

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

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

第二行注釋為了告訴python直譯器,按照utf-8編碼讀取源**。

格式化字串:字串中間的一部分內容根據變數變化。使用方法:用佔位符%x作為變數加入到字串中,在字串後面用%(變數)。常見的佔位符有%d整數%f浮點數%s字串%x十六進製制整數

>>>'hello,%s'%chen!"

格式化整數和浮點數還可以指定顯示位數、是否補0和整數和小數的位數。

如果你不太確定變數的型別,可以用%s表示,它會把任何型別的資料轉換為字串。

當%只是乙個普通的百分號是需要用%%表示。

python3字串相等 python3 字串

1 拼接 1 多個字串進行連線 連線符,必須左右資料型別一致 例 print hello world 結果 helloworld 例 print 5 world 結果 typeerror unsupported operand type s for int and str 2 多個相同字串連線 字串...

python3 字串基礎

字串可以使用一對單引號或一對雙引號指定起止位置,兩種方式指定的字串完全等價。如 hello 和 world 可以用三引號 或 指定多行字串,其中可自由使用單 雙引號而不需轉義。如 what s your name?i asked.字串過長不方便寫在一行時,可以使用反斜槓跨行而不增加換行符。如 abc...

python3 字串操作

auther aaron fan name my tname is age is print name.capitalize 這段話的首字母大寫 print name.count a 統計這段字串中一共有多少個a print name.casefold print name.center 50,一共...