1. 程式人生 > >【python3的學習之路三】字符串和編碼

【python3的學習之路三】字符串和編碼

而且 亂碼 \n spa 結果 雙引號 gb2312 span 大小寫

字符串編碼

由於計算機是美國人發明的,因此,最早只有127個字符被編碼到計算機裏,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母A的編碼是65,小寫字母z的編碼是122。

但是要處理中文顯然一個字節是不夠的,至少需要兩個字節,而且還不能和ASCII編碼沖突,所以,中國制定了GB2312編碼,用來把中文編進去。

但是全世界有上百種語言,各國有各國的標準就,會不可避免地出現沖突,結果就是,在多語言混合的文本中,顯示出來會有亂碼。因此,Unicode應運而生。Unicode把所有語言都統一到一套編碼裏,這樣就不會再有亂碼問題了。

現在,捋一捋ASCII編碼和Unicode編碼的區別:ASCII編碼是1個字節,而Unicode編碼通常是2個字節。

  • 字母A用ASCII編碼是十進制的65,二進制的01000001;
  • 字符0用ASCII編碼是十進制的48,二進制的00110000,註意字符’0’和整數0是不同的;
  • 漢字中已經超出了ASCII編碼的範圍,用Unicode編碼是十進制的20013,二進制的01001110 00101101。

如果把ASCII編碼的A用Unicode編碼,只需要在前面補0就可以,因此,A的Unicode編碼是00000000 01000001。

Python的字符串

  • 在python3中字符串是以Unicode編碼的
  • 對於單個字符串的編碼,python提供了++ord()++函數獲取字符的整數表示,chr()函數把編碼轉化成對應的字符
ord(A)   # 65
ord()  # 20013
chr(66)    #B
chr(25991) #

格式化

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

%d    整數
%f    浮點數,可指定小數點後的精度
%e      用科學計數法格式化浮點數
%s    字符串
%x    十六進制整數

轉義字符

\(在行尾時)    續行符
\\            反斜杠符號
\            單引號
\" 雙引號 \a 響鈴 \b 退格(Backspace) \e 轉義 \000 空 \n 換行 \v 縱向制表符 \t 橫向制表符 \r 回車 \f 換頁 \oyy 八進制數,yy代表的字符,例如:\o12代表換行 \xyy 十六進制數,yy代表的字符,例如:\x0a代表換行 \other 其它的字符以普通格式輸出

【python3的學習之路三】字符串和編碼