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'

躍躍欲試

參考資料

  • Python自動化的樂趣, 第一章, Al Sweigart 著、H&C 譯, 碁峰
  • Python編程入門第3版(簡), 第二章, Toby Donaldson著, 人民郵電出版社
  • 精通Python, 第二章, Bill Lubanovic著, 賴屹民譯, 歐萊禮

results matching ""

    No results matching ""