Python資料型別 - 字串

我們將在本節中介紹Python的字串資料型別。

字串是一系列字元,由計算機中的二進位制資料表示。在Python中,字串是unicode字元的集合。

Info
Python字串是不可變資料型別。

建立字串:

可以使用單引號或雙引號建立字串,也可以使用三引號建立多行字串。

x = "String of characters"
x = """Multiline
string"""

訪問字串元素:

切片操作符 [] 用來訪問字串中的字元,索引是跟Python其他的資料型別一樣是從0開始的。

>>> x = 'Python Programming'
>>> print('x[0] =', x[0])
'P'
>>> print('x[4:15] =', x[4:15])
'on Programm'
>>> x[4] = 'l'
TypeError: 'str' object does not support item assignment
Warning
索引必須是整型數字,否則就會有 TypeError 報錯。

負索引:

你可以通過負索引來訪問字串中的字元,比如 -1 就是指向最後一個字元,類似的, -2 指向倒數第二個字元。

>>> s = "Python"
>>> print(s[-1])
'n'
>>> print(s[-2])
'o'
>>> print(s[-3])
'h'

刪除字串中的字元:

由於字串是不可變的,因此無法刪除字串中的字元。 但是你可以為同一變數指定一個新字串。 例如,

>>> s = 'Python'
>>> s = 'Program'
>>> s
'Program'

整個字串可以用 del 關鍵字來刪除,

>>> del s

Python字串操作:

連線兩個或多個字串:

你可以通過來+號連線其兩個或多個字串。

>>> s1 = 'Python '
>>> s2 = 'Programming'
>>> print(s1 + s2)
'Python Programming'

如果你把兩個字串寫在一起,它們會跟用+一樣,互相連線起來。

>>> print('Python ' 'Programming')
'Python Programming'

括號也可以用來連線在多行內的不同的字串,這個在需要分叉長字串(比如檔案路徑)的時候非常實用。

>>> s = ('Python '
     'Programming')
>>> s
'Pyhton Programming'

遍歷字串:

可以通過for 迴圈來遍歷整個字串,

s = 'Python'
for i in s:
    print(i)
P
y
t
h
o
n

字串成員檢查:

通過 in 關鍵字可以來檢查某個字元或者字串是否存在於該字串中。

>>> s = 'Python'
>>> print('a' in s)
False
>>> print('Py' in s)
True

適用於字串的內建函式:

應用於其他序列資料型別的函式也可適用於字串。 常用的函式比如len()來查詢字串中的字元數,enumerate() 則返回一個包含索引的物件和字串中元素的值作為一對資料的資料物件。

Python字串格式化:

轉義:

你可以通過string-escape來轉義某些特殊的字元,這些特殊字元在Python中有特別的含義。比如,如果你想輸出

James asked, "Do you know Andrew's place?"

你在這裡既不能用單引號,也不能用雙引號,因為字串中含有了這兩種引號。如果你試著把這段文字放在單引號或雙引號內,你會得到 SyntaxError錯誤.

>>> print("James asked, "Do you know Andrew's place?"")
SyntaxError: invalid syntax
>>> print('James asked, "Do you know Andrew's place?"')	  
SyntaxError: invalid syntax

解決方法就是要麼你用三個單引號''',要麼你就用轉義方法。在Python中,轉義是以反斜槓\來開始的,\用來給直譯器提示這裡有特殊的處理。

#using triple quotation marks
print('''James asked, "Do you know Andrew's place?"''')

#escaping single quotes
print('James asked, "Do you know Andrew\'s place?"')

#escaping double quotes
print("James asked, \"Do you know Andrew's place?\"")

下表當中列出了Python當中的轉義字元。

Escape sequence Description
\\ 反斜槓
\' 單引號
\" 雙引號
\a ASCII聲音警示
\b 後退鍵
\n 新建行
\r 回車
\t 水平製表符
\v 豎直製表符
\ooo 八進位制符ooo
\xHH 十六進位制符HH
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib
    
>>> print("First Line\nSecond Line")
First Line
Second Line

用原始字串 r 來省略轉義:

你可以在字串前加r或者R來把字串變成原始字串,這樣就省略了轉義字元。

比如下面的例子,

#without r
>>> print("C:\\User\\Python36-32\\Lib")
C:\User\Python36-32\Lib

#with r  
>>> print(r"C:\\User\\Python36-32\\Lib")
C:\\User\\Python36-32\\Lib

字串 format() 方法:

format() 方法是用來對字串進行格式化的一把利器,在格式化的字串中,佔位符{} 將會被 format() 方法中的字串來替代。

你可以通過位置或者關鍵字引數來制定替代的順序。

#default placeholder
>>> s1 = "{}, {} and {}".format('Bread', 'Butter', 'Chocolate')
>>> print(s1)
'Bread, Butter and Chocolate'

#positional arguments
>>> s2 = "{1}, {2} and {0}".format('Bread', 'Butter', 'Chocolate')	  
>>> print(s2)
'Butter, Chocolate and Bread'

#keyword arguments
>>> s3 = "{a}, {x} and {c}".format(x = 'Bread', c = 'Butter', a = 'Chocolate')	  
>>> print(s3)
'Chocolate, Bread and Butter'