Python 速查手冊

2.4 字串

字串 (string) 的字面常數 (literal) 為單引號、雙引號或連續三個引號圍起來的內容,其中連續三個引號被稱為三引號字串,三引號字串用為文件字串 (docstring) ,至於單引號及雙引號的作用一樣,單引號字串中可以直接使用雙引號當字元,同樣的,雙引號字串中也可以直接使用單引號當字元,此外,利用反斜線加上指定英文字母可以表示跳脫序列 (escape sequence) ,這些跳脫序列表示一些不可見字元或 Unicode 符號

print("Hello world!")
print("she's story")
print('輕輕的我走了\n正如我輕輕的來\n')
print("""文件字串""")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:str01.py
# 功能:示範各種字串
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 str01.py
Hello world!
she's story
輕輕的我走了
正如我輕輕的來
 
文件字串
$

這裡可以看到跳脫序列的完整列表,反斜線加上反斜線可在輸出的時候表示反斜線,其餘各有不同的用途,例如反斜線之後加上小寫英文字母 n 表示新行符號,反斜線之後加上英文小寫字母 t 表示水平的 tab 符號等等。

跳脫序列功能
\\顯示反斜線。
\'顯示單引號。
\"顯示雙引號。
\aASCII 警示音。
\bASCII 退格鍵。
\fASCII 換頁符號。
\nASCII 換行符號。
\rASCII 輸入鍵。
\tASCII 水平 tab 鍵。
\vASCII 垂直 tab 鍵。
\ooo八進位 Unicode 符號。
\xhh十六進位 Unicode 符號。
Python 官方文件中有提到跳脫字元 \newline ,但經測試作用不明,故略去。

很多情況都會用到字串型態,基本上所有需要文字的地方都需要字串,例如 GUI 中選單、按鈕的文字,或是網頁中顯示的文字,如果把網頁中的文字放到 Python 程式中來處理的話,這些文字也需要先轉換成字串。

字串是不可變的資料型態 (data type) ,不可變的意思是說不能改變字串中的元素值,雖說是不能改變,但可以重新指派,所謂重新指派是指將調整後的字串重新指派給原字串變數 (variable) 。

建立字串除了字面常數外,也可用字串的建構子 (constructor) str() ,注意這裡三個英文字母都小寫,所以字串的建構子也被歸類到內建函數 (built-in function) 中

s = str(123)
print(s)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:str02.py
# 功能:示範字串的建構子
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 str02.py
123
$

字串屬於序列 (sequence) 的一種,因此很多操作都跟序列一樣,這裡要注意用索引值可以取得子字串,但不能改變子字串的內容。

a = "a"
b = "b"
a += b
print(a)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:str03.py
# 功能:示範字串的建構子
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 str03.py
ab
$
留意以上例子利用了重新指派的技巧,變數 a 原本是 "a" ,後來 "a""b" 相接後, "ab" 被重新指派給了變數 a

序列型態有下表的操作模式

模式說明
x in s判斷 x 是否在 s 中。
x not in s判斷 x 是否不在 s 中。
s + x將 x 附加在 s 之後。
s * n將 s 中的元素複製 n 倍。
s[i]取得 s 中索引值為 i 的元素。
s[i:j]取得 s 中索引值 i 到 j 之間的元素。
s[i:j:k]取得 s 中索引值 i 到 j 之間以 k 為間隔的元素。
len(s)回傳 s 的的元素總數。
min(s)回傳 s 中的最小值。
max(s)回傳 s 中的最大值。

字串也是物件 (object) ,有超過 40 個方法 (method) 可用,這裡列舉一些處理英文字母的方法,例如 upper() 回傳將原字串都改為大寫字母的新字串,至於還有些 is 開頭的方法,這些是判斷 is 後所接英文單字的情況,例如 isdigit() 方法是判斷原字串中是否有數字,結果回傳真假值

關於字串相關方法的詳細解說,請參考 10.4 字串 str

相關教學影片

上一頁: 2.3 數字
Python 速查手冊 - 目錄
下一頁: 2.5 串列及序對
回 Python 教材首頁
回程式語言教材首頁