1.3. 字串 (string)
字串(String)是一系列的字元(character),即字元序列。字串在Python中是不可變的,我們無法直接改完字串,但是我們可以將它的一部份複製到其他字串來達到相同的結果。在Python中使用單引號「'」或雙引號「"」包住一系列字元來建立字串。
>>> s = 'Hello World!'
>>> s
'Hello World!'
>>> type(s)
<class 'str'>
>>> s = "Hey Python!"
>>> s
'Hey Python!'
>>> type(s)
<class 'str'>
此外,單引號或雙引號可以用來建立有包含引號的字串。
>>> s = 'A "Hello, World!" program is a computer program that outputs or displays "Hello, World!" to a user.'
>>> s
'A "Hello, World!" program is a computer program that outputs or displays "Hello, World!" to a user.'
>>> type(s)
<class 'str'>
另外,可以使用三個引用號來建立多行的字串。
>>> s = '''A "Hello, World!" progran is a computer program
... that outputs or displays "Hello, World!"
... to a user.'''
>>> s
'A "Hello, World!" progran is a computer program\nthat outputs or displays "Hell
o, World!"\nto a user.'
>>> print(s)
A "Hello, World!" progran is a computer program
that outputs or displays "Hello, World!"
to a user.
其中,「\n」表示換行,所以當做用 print(s) 輸出字串時,則字串會呈現三行的文字。
在字串中可以用「\t」來對齊文字,反斜線「\」也可以用來表示字面的單引號或雙引號,如果需要字面的反斜線可以使用「\」。
>>> s = '\"\\t\" \tcan \tbe \tused \tto \talign \ta \ttext!'
>>> s
'"\\t" \tcan \tbe \tused \tto \talign \ta \ttext!'
>>> print(s)
"\t" can be used to align a text!
使用 len() 來取得字串長度
使用 len() 來取得一個字串的長度。
>>> s = '"Hello, World!"'
>>> len(s)
15
>>> s = 'A "Hello, World!" program is a computer program that outputs or displays "Hello, World!" to a user.'
>>> len(s)
99
使用「+」結合字串
使用「+」來結合不同的字串。
>>> x = '"Hello,'
>>> y = ' World!"'
>>> s = x + y
>>> s
'"Hello, World!"'
使用「*」複製字串
使用「*」來複製字串。
>>> x = 'Hello '
>>> y = 'World!'
>>> x *= 5
>>> x
'Hello Hello Hello Hello Hello '
>>> s = x + y
>>> s
'Hello Hello Hello Hello Hello World!'
使用 [ 索引值 ] 取得字元
利用「[ 索引值 ]」來取得字元,字串中可操作的字元索引值範圍是從 0 到 len(s) - 1,若索引值超出這範圍會產生錯誤訊息。
>>> s = '"Hello, World!"'
>>> s[1]
'H'
>>> s[2]
'e'
>>> s[3]
'l'
>>> s[4]
'l'
>>> s[5]
'o'
>> s[14]
'"'
>> s[15]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
使用 [ 開始: 結束: 間隔 ] 擷取字串
使用「[ 開始: 結束: 間隔 ]」來擷取子字串。
>>> s = '1234567890'
>>> len(s)
10
>>> s[0:4]
'1234'
>>> s[:5]
'12345'
>>> s[5:]
'67890'
>>> s[3:6]
'456'
>>> s[0:10:2]
'13579'
>>> s[1:10:2]
'24680'
>>> s[::3]
'1470'
>>> s[:5:2]
'135'
>>> s[5::2]
'680'
>>> s[-1::-1]
'0987654321'
>>> s[::-1]
'0987654321'
>>> s[-5:-8:-1]
'654'
使用 split() 切割字串
使用 split() 來切割字串,如果沒有傳入參數,則預設是以空白為切割依據。若有傳入參數,則依照傳入的參數來切割字串。
>>> s = '1 2 3 4 5 6 7 8 9 0'
'1 2 3 4 5 6 7 8 9 0'
>>> s = s.split()
>>> s
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
>>> type(s)
<class 'list'>
>>> s = '1,2,3,4,5,6,7,8,9,0'
>>> s = s.split(',')
>>> s
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
使用 join() 結合字串
使用 join()來結合字串,也可以在不同字串之間加入符號。
>>> s = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
>>> s = "".join(s)
>>> s
'1234567890'
>>> s = ['H', 'e', 'l', 'l', 'o']
>>> s = "\n".join(s)
>>> s
'H\ne\nl\nl\no'
>>> print(s)
H
e
l
l
o
使用 strip() 去除字串的頭尾符號
使用 strip() 對字串去除頭尾可能的符號,例如:空白或換行符號等。
>>> s = ' Hello '
>>> s = s.strip()
>>> s
'Hello'
>>> s = '.Hello..'
>>> s = s.strip('.')
>>> s
'Hello'
使用 replace() 取代字串
使用 replace() 來取代字串中特定的字元為另一個字元。
>>> s = '.H.e.l.l.o.'
>>> s = s.replace('.', '')
>>> s
'Hello'
使用 upper() 及 lower() 轉換字串大小寫
使用 upper() 及 lower() 對一個字串進行字母的大小寫轉換。
>>> s = 'Hello'
>>> s = s.upper()
>>> s
'HELLO'
>>> s = 'HELLO'
>>> s = s.lower()
>>> s
'hello'
躍躍欲試
- d051: 糟糕,我發燒了! [參考答案][Doc] ★★, practice
參考資料
- Python自動化的樂趣, 第一章, Al Sweigart 著、H&C 譯, 碁峰
- Python編程入門第3版(簡), 第二章, Toby Donaldson著, 人民郵電出版社
- 精通Python, 第二章, Bill Lubanovic著, 賴屹民譯, 歐萊禮