字元串類型

字元串類型是程式語言里非常重要的數據類型,因為幾乎所有的程式主要做的事情就是處理字元串,這個隨著大家的學習會有深入的體會。

字元串的定義

python中字元串(str)是使用單引號,雙引號,三引號包裹起來的字元的序列,用來表示文本資訊。

>>> a = 'a'		# 單引號
>>> b = "bc"	# 雙引號
>>> print(type(a), type(b))
<class 'str'> <class 'str'>

使用單引號和雙引號進行字元串定義沒有任何區別。

當單引號是字元串的一部分時用雙引號定義字元串,反之亦然。

但個人建議一般情況下使用單引號定義字元串,因為不需要按shift鍵,方便。當然用雙引號也沒有什麼不好,但盡量保持一致。

>>> print('我最近看了"平凡的世界"')
我最近看了"平凡的世界"
>>> print("我最近看了'平凡的世界'")
我最近看了'平凡的世界'

一對單引號或雙引號只能定義單行字元串,三引號可以用來創建多行表示的字元串。

>>> content = '''窗前明月光,疑是地上霜;
舉頭望明月,低頭思故鄉。'''
>>> print(content)
窗前明月光,疑是地上霜;
舉頭望明月,低頭思故鄉。

三單引號和三雙引號也沒有本質區別。三雙引號一般用來做多行注釋,函數,類定義時的說明文檔。

"""
我是多行注釋
函數,類定義的說明文檔
後面我們再說
"""

字元串還有一個很重要的概念空字元串,表示字元串中沒有任何字元,定義如下:

>>> a = ''
>>> print(a)

直接寫兩個引號,中間沒有空格,列印時沒有任何顯示。空字元串的概念非常重要,用來表示文本輸出為空。

字元串的索引

序列類型中的元素都用索引來表示它在序列中的位置。

單個字元在字元串中的位置叫索引,也叫下標

1659343896765

索引是從0開始的整數序列,0表示字元串的第一個位置,以此類推。

通過索引可以獲取字元串中的單個字元,語法如下:

str[index]
>>> s = 'Hello,world!'
>>> print(s[0])
H

索引還可以使用負數表示,-1表示倒數第一個字元,-2表示倒數第二個字元,以此類推。

>>> s = 'Hello,world!'
>>> print(s[-1])
!
>>> print(s[-2])
d

字元串的切片

獲取序列中的子序列叫切片。

字元串的切片就是獲取字元串的子串。字元串切片的語法如下:

str[start:end:step]
  • start表示切片的開始索引,在切片的結果中包含開始索引的字元
  • end表示結束索引,在切片的結果中不包含結束索引的字元
  • step是步長,表示每隔幾個字元切片,當步長為1是可以省略。

看下面的案例:

>>> s = '012345678'
>>> print(s[1:5])   # 包頭不包尾
1234

從頭開始切片可以省略start

>>> print(s[:5])
01234

切到末尾包含末尾可以省略end

>>> print(s[1:])
12345678

當步長不為1時

>>> print(s[1::2])
13579

特別的,當步長為負數時,表示反向切片,切片會從後往前進行,例如:

>>> print(s[1::-1])
10
>>> print(s[9::-1])
876543210

字元串拼接

python中序列可以進行加法運算實現拼接。所以字元串可以通過+進行拼接:

>>> a = 'hello'
>>> b = ' '
>>> c = 'world!'
>>> print(a+b+c)
hello world!

既然可以加法運算,那麼一般也可以和整數進行乘法運算,實現重複拼接的效果:

>>> print('*' * 10)
**********

字元串和數值的相互轉化

1'1'不同,1.2'1.2'也不相同,但是它們可以相互轉化。

整數和字元串之間的轉化

>>> int('1')	# 整數字元串轉化為整數
1
>>> str(1)		# 整數轉化為字元串
'1'

浮點數和字元串之間的轉化

>>> float('1.2')
1.2
>>> str(1.2)
'1.2'

將數值字元串轉化為對應的數值類型時,格式一定要正確,否則會拋出異常

>>> int('1.2')   # '1.2'不是整數字元串運行會拋出異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.2'

注意:如果你用print函數列印整數和整數字元串輸出形式是一樣的。

>>> print(1)
1
>>> print('1')
1

轉義符

除了可見字元外,還有很多不可見的特殊字元,例如回車,換行,製表符等。這些字元是通過反斜杠\和其他字元組合來表示,稱為轉義,所以\也稱為轉義符。常見的轉義字元如下表:

組合 符號
\\ 反斜杠符號
\' 單引號
\" 雙引號
\a 響鈴
\n 換行
\t 橫向製表符
\r 回車
\f 換頁
>>> print('窗前明月光,\n疑是地上霜。')  # 輸出換行
窗前明月光,
疑是地上霜。
>>> print('\'')      # 輸出單引號本身
'

其他的轉義字元大家可以自行練習。

可以通過前導符r,強制不轉義將字元串原樣輸出:

>>> print(r'窗前明月光,\n疑是地上霜。')  # 不轉義
窗前明月光,\n疑是地上霜。
再給大家分享一個學習小技巧,我以前分不清正斜杠和反斜杠。直到有一天,撇`/`就是正,捺`\`就是反。
是不是秒記。
嘿嘿,不用謝!