過(guò)早的優(yōu)化代碼是罪惡之源兆览。
—— Donald Knuth
目錄
無(wú)論哪種編程語(yǔ)言,字符串
處理都是最重要的內(nèi)容之一贱迟。當(dāng)然姐扮,Python 也不例外。
1衣吠,Python 字符串
在這節(jié)內(nèi)容中茶敏,我們已經(jīng)知道了Python 字符串是用以下引號(hào)
引住的一串字符:
- 單引號(hào)
''
- 雙引號(hào)
""
- 三單引號(hào)
'''
- 三雙引號(hào)
"""
Python3
中的字符串
類型統(tǒng)一采用Unicode
編碼,因此支持多種語(yǔ)言缚俏。
我們這里介紹的字符串
類型惊搏,指的是<class 'str'>
:
>>> type('中國(guó)')
<class 'str'>
>>> type('abc')
<class 'str'>
2,常用轉(zhuǎn)義字符
在用到某些特殊字符時(shí)忧换,需要用到轉(zhuǎn)義字符----反斜杠\
恬惯。
下表是Python 中的一些常用轉(zhuǎn)義字符:
轉(zhuǎn)義字符 | 含義 |
---|---|
\\ |
反斜杠 |
\' |
單引號(hào) |
\" |
雙引號(hào) |
\n |
換行 |
\r |
回車 |
\t |
橫向制表符 |
3,字符串長(zhǎng)度
使用len()
函數(shù)可以獲取字符串的長(zhǎng)度
:
>>> len('Hello') # 一個(gè)英文字符的長(zhǎng)度是 1
5
>>> len('Hi')
2
>>> len('Python')
6
>>> len('中國(guó)') # 一個(gè)中文字符的長(zhǎng)度是 1
2
4包雀,截取字符串
在Python 中可以用中括號(hào)[]
來(lái)截取字符串內(nèi)容宿崭。
獲取單個(gè)字符
通過(guò)下標(biāo)
獲取字符串中的單個(gè)字符,語(yǔ)法格式如下:
s[n]
其中s
是一個(gè)字符串變量才写,n
為下標(biāo)葡兑,是一個(gè)整數(shù),其取值范圍為:
-len(s)<=n<=len(s)-1
-
-len(s)<=n<0
:從右往左數(shù)赞草,取第n
個(gè)字符 -
0<=n<=len(s)-1
:從左往右數(shù)讹堤,取第n+1
個(gè)字符
圖解:
示例:
>>> s = 'Hello' # 字符換變量 s
>>> len(s) # s 的長(zhǎng)度
5 # 下標(biāo)n 的范圍為 -5<=n<=4
>>> s[-6] # 超出取值范圍,報(bào)錯(cuò)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[-5] # 取倒數(shù)第5 個(gè)字符
'H'
>>> s[-1] # 取倒數(shù)第1 個(gè)字符
'o'
>>> s[0] # 取第1 個(gè)字符
'H'
>>> s[4] # 取最后一個(gè)字符
'o'
>>> s[5] # 超出取值范圍厨疙,報(bào)錯(cuò)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
獲取部分字符
獲取部分字符串的語(yǔ)法格式如下:
s[m:n]
其中s
是一個(gè)字符串變量洲守,m
和 n
可以是任意的整數(shù)。
s[m:n]
代表的含義是:獲取字符串s
下標(biāo)m
到 n
之間的子串,子串的值包含s[m]
梗醇,而不包含s[n]
知允,即遵循左閉右開(kāi)
原則。
圖解:
示例:
>>> s = 'Hello'
>>> s[-5:1]
'H'
>>> s[-7:2]
'He'
>>> s[-3:2]
''
>>> s[0:3]
'Hel'
>>> s[3:1]
''
>>> s[3:-1]
'l'
m 和 n 都可不寫
- 如果不寫
m
叙谨,代表從最左
邊開(kāi)始 - 如果不寫
n
温鸽,代表到最右
邊結(jié)束
示例:
>>> s = 'Hello'
>>> s[:] # m 和 n 都不寫代表整個(gè)字符串
'Hello'
>>> s[:3] # 不寫 m,代表從最左邊開(kāi)始手负,直到下標(biāo) n
'Hel'
>>> s[2:] # 不寫 n涤垫,代表從下標(biāo) m開(kāi)始,直到最右邊
'llo'
5竟终,字符串連接
加號(hào)+
運(yùn)算符可以連接兩個(gè)字符串
:
>>> 'abc' + '123'
'abc123'
>>> 'Hi' + '你好'
'Hi你好'
6蝠猬,重復(fù)字符串
一個(gè)字符串
乘一個(gè)整數(shù)n
,相當(dāng)于n
個(gè)字符串相連:
>>> 'a' * 5
'aaaaa'
>>> 'abc' * 3
'abcabcabc'
>>> '你好' * 2
'你好你好'
7统捶,字符串包含
運(yùn)算符in
in
在Python 中是一個(gè)運(yùn)算符
榆芦,可用于判斷一個(gè)子串
是否包含
在一個(gè)字符串
中:
>>> 'a' in 'abc'
True
>>> 'ab' in 'abc'
True
>>> 'ad' in 'abc'
False
運(yùn)算符not in
not in
是in
的反義,用于判斷一個(gè)子串
是否不包含
在一個(gè)字符串
中:
>>> 'a' not in 'abc'
False
>>> 'ab' not in 'abc'
False
>>> 'ad' not in 'abc'
True
8瘾境,字符串格式化
Python 字符串支持多種數(shù)據(jù)類型的格式化歧杏,字符串格式化符號(hào)
見(jiàn)下表:
符號(hào) | 含義 |
---|---|
%c |
格式化字符 |
%s |
格式化字符串 |
%d |
格式化整數(shù) |
%o |
格式化八進(jìn)制數(shù) |
%x/%X |
格式化十六進(jìn)制數(shù),后者為大寫 |
%f |
格式化浮點(diǎn)數(shù) |
%e |
用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù) |
示例:
>>> '%c' % 'a' # 格式化字符
'a'
>>> '%c' % 'B' # 格式化字符
'B'
>>> '%s' % '中國(guó)' # 格式化字符串
'中國(guó)'
>>> '%s' % 'abc' # 格式化字符串
'abc'
>>> '%s' % 123 # 數(shù)字類型也可格式化為字符串
'123'
>>> '%d' % 12345 # 格式化數(shù)字
'12345'
>>> '%o' % 8 # 格式化八進(jìn)制數(shù)字
'10'
>>> '%o' % 9 # 格式化八進(jìn)制數(shù)字
'11'
>>> '%x' % 10 # 格式化十六進(jìn)制數(shù)字迷守,小寫
'a'
>>> '%x' % 11 # 格式化十六進(jìn)制數(shù)字犬绒,小寫
'b'
>>> '%X' % 10 # 格式化十六進(jìn)制數(shù)字,大寫
'A'
>>> '%X' % 11 # 格式化十六進(jìn)制數(shù)字兑凿,大寫
'B'
>>> '%f' % 123.123 # 格式化浮點(diǎn)數(shù)
'123.123000'
>>> '%e' % 123.123 # 科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù)
'1.231230e+02'
寬度與小數(shù)點(diǎn)位數(shù)
每種格式化符號(hào)之前都可以添加m.n
:
-
m
與n
都是正整數(shù) -
m
表示格式化的寬度凯力,對(duì)于浮點(diǎn)數(shù)無(wú)效 -
n
表示小數(shù)點(diǎn)后的位數(shù),只對(duì)浮點(diǎn)數(shù)有效
示例:
>>> '%4s' % 'abc' # 總寬度為 4
' abc' # 'abc' 之前有 1 個(gè)空格
>>> '%5s' % 'abc' # 總寬度為 5
' abc' # 'abc' 之前有 2 個(gè)空格
>>> '%5d' % 100 # 總寬度為 5
' 100' # 100 之前有 2 個(gè)空格
>>> '%.5d' % 100 # 總寬度為 5礼华,注意 5 之前有個(gè)點(diǎn)
'00100' # 寬度不夠用 0 補(bǔ)齊咐鹤,所以 100 之前有 2 個(gè) 0
>>> '%.2f' % 100.123 # 小數(shù)點(diǎn)后保留 2 位,多余位數(shù)舍棄
'100.12'
>>> '%.5f' % 100.123 # 小數(shù)點(diǎn)后保留 5 位圣絮,位數(shù)不夠祈惶,用 0 補(bǔ)齊
'100.12300'
左對(duì)齊與右對(duì)齊
默認(rèn)情況下,寬度
不夠時(shí)扮匠,會(huì)在左邊加空格捧请,這是右對(duì)齊
:
>>> '%5s' % 'abc' # 寬度為 5,不夠用空格補(bǔ)齊棒搜,右對(duì)齊
' abc'
可在數(shù)字5
之前添加一個(gè)負(fù)號(hào)-
疹蛉,寬度
不夠時(shí),會(huì)在右邊加空格力麸,這是左對(duì)齊
:
>>> '%-5s' % 'abc' # 寬度為 5可款,不夠用空格補(bǔ)齊育韩,左對(duì)齊
'abc '
(完。)
推薦閱讀:
Python 簡(jiǎn)明教程 --- 2闺鲸,第一個(gè)Python 程序
Python 簡(jiǎn)明教程 --- 3筋讨,Python 基礎(chǔ)概念
Python 簡(jiǎn)明教程 --- 4,Python 變量與基本數(shù)據(jù)類型
Python 簡(jiǎn)明教程 --- 5摸恍,Python 表達(dá)式與運(yùn)算符
Python 簡(jiǎn)明教程 --- 6版仔,Python 控制流