天天看點

Python第三課 字元

轉義與不轉義:

字元串是以單引号

'

或雙引号

"

括起來的任意文本,\轉義,Python還允許用

r''

表示

''

内部的字元串預設不轉義

換行:\n

指令行中輸入print('''回車表示開始換行輸入,提示符由

>>>

變為

...,

當輸入完結束符

```

和括号

)

後,執行該語句并列印結果

Python第三課 字元

在最新的Python 3版本中,字元串是以Unicode編碼的,對于單個字元的編碼,Python提供了

ord()

函數擷取字元的整數表示,

chr()

函數把編碼轉換為對應的字元。

>>> ord('A')
65
           

以Unicode表示的

str

通過

encode()

方法可以編碼為指定的

bytes,

純英文的

str

可以用

ASCII

編碼為

bytes

,内容是一樣的,含有中文的

str

可以用

UTF-8

編碼為

bytes

。含有中文的

str

無法用

ASCII

編碼,因為中文編碼的範圍超過了

ASCII

編碼的範圍,Python會報錯

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
           

如果我們從網絡或磁盤上讀取了位元組流,那麼讀到的資料就是

bytes

。要把

bytes

變為

str

,就需要用

decode()

方法

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

要計算

str

包含多少個字元,可以用

len()

函數

>>> len('ABC')
3
>>> len('中文')
2
           

在操作字元串時,我們經常遇到

str

bytes

的互相轉換。為了避免亂碼問題,應當始終堅持使用UTF-8編碼對

str

bytes

進行轉換。

由于Python源代碼也是一個文本檔案,是以,當你的源代碼中包含中文的時候,在儲存源代碼時,就需要務必指定儲存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在檔案開頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
           

第一行注釋是為了告訴Linux/OS X系統,這是一個Python可執行程式,Windows系統會忽略這個注釋;

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

申明了UTF-8編碼并不意味着你的

.py

檔案就是UTF-8編碼的,必須并且要確定文本編輯器正在使用UTF-8 without BOM編碼:

格式化:

1.在Python中,采用的格式化方式和C語言是一緻的,用

%

實作,舉例如下:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
           

你可能猜到了,

%

運算符就是用來格式化字元串的。在字元串内部,

%s

表示用字元串替換,

%d

表示用整數替換,有幾個

%?

占位符,後面就跟幾個變量或者值,順序要對應好。如果隻有一個

%?

,括号可以省略。

常見的占位符有:

占位符 替換内容
%d 整數
%f 浮點數
%s 字元串
%x 十六進制整數

有些時候,字元串裡面的

%

是一個普通字元怎麼辦?這個時候就需要轉義,用

%%

來表示一個

%

2.format()