字符串處理相關(guān)API
字符串是7種序列類型中的一種。
除了序列的操作函數(shù),比如len()來求字符串長度之外,Python還為字符串提供豐富到可以寫個(gè)編輯器的API.
查找類API
首先,下面的查找API都是為了查找位置,或者查一共有幾次這樣的操作。
如果只是想判斷一個(gè)字符串是不是另一個(gè)字符串的子串的話,使用序列的in運(yùn)算符就可以了。
例:
str1 = "hahahahaha,heiheihei"
if 'haha' in str1:
print('haha is a substring of '+str1)
else:
print('haha is NOT a substring of '+str1)
數(shù)數(shù)有多少個(gè)匹配的字符串 - count函數(shù)
原型:str.count(sub[, start[, end]])
- sub:要查找的子字符串
- start:起始位置
- end:結(jié)束位置
字符串的count函數(shù)可以數(shù)出來有多少次匹配,我們看個(gè)例子,有5個(gè)ha和3個(gè)hei
str1 = "hahahahaha,heiheihei"
print(str1.count('ha'))
print(str1.count('haha'))
輸出為5和2.
haha只能匹配兩次。
再加上擴(kuò)展參數(shù):
print(str1.count('ha',1))
print(str1.count('ha',0,5))
不拋異常的查找 find和rfind
find函數(shù)的行為是,如果能找到,則返回在序列中的坐標(biāo),如果找不到,則返回-1. rfind是從右向左查找。我們來看例子:
print(str1.find('haha'))
print(str1.rfind('haha'))
輸出值為0和6.
找不到的例子:
print(str1.find('hoho'))
print(str1.rfind('hi'))
輸出值都是-1.
完整形式:
- str.find(sub[, start[, end]])
- str.rfind(sub[, start[, end]])
會(huì)拋異常的查找:index和rindex
index和rindex的功能與find和rfind基本上一致,除了在找不到時(shí)會(huì)拋出ValueError異常而不是返回-1.
例:
>>> str1 = "hehe"
>>> str1.index('ha')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
所以我們需要加try...except語句來處理之:
try:
str1.index('hoho')
except ValueError:
print('hoho cannot be found in '+str1)
從頭查找和從尾查找 startswith, endswith
有時(shí)候,我們希望做從頭匹配或者匹配尾部。這時(shí)候就要用到startswith函數(shù)和endswith函數(shù)。例:
print(str1.startswith('ha'))
print(str1.endswith('hei'))
這兩個(gè)返回值均為True.
如果需要更復(fù)雜的匹配,還是需要正則表達(dá)式。與Java等語言不同,Python中的正則表達(dá)式有專門的模塊,字符串的API不負(fù)責(zé)這個(gè)事情。
小結(jié)
- 判斷字符串是不是在別一個(gè)串中能找到:in
- 判斷是否左匹配:startswith
- 判斷是否右匹配:endswith
- 數(shù)數(shù)能匹配多少次:count
- 不拋異常的求匹配位置:find,rfind
- 會(huì)拋異常的求匹配位置:index,rindex