函數一:字符串截取,字符串的子串 s[start:end:step]
字符串中的子串規則與列表中的切片規則完全一樣,只是字符串切片後返回一個新的字符串,原來字符串不變。
start,end,step 可選,冒號必須的 , 基本含義是從 start 開始(包括 string[start]),以 step爲步長,獲取到 end 的一段元素(注意不包括 string[end])。
如果step=1 ,那麼就是 string[start], string[start+1], string[end -2] ,string[end -1]。
如果 step>1 ,那麼第一爲 string[start],第二爲 string[start+step],第三爲string[start+2*step] ,…, 以此類推,最後一個爲 string[m],其中 m <end 但是 m +step >end 。
即索引的變化是從 start 開始,按 step 跳躍變化,不斷增大,但是不等於 end ,也不超過 end 。
如果end 超過了最後一個元素的索引,那麼最多取到最後一個元素。
start不指定默認 0 ,end 不指定默認序列尾, step 不指定默認 1。
step爲正數則索引是增加的,索引沿正方向變化;如果 step<0 ,那麼索引是減少的,按負方向變化。
不能使用step= 0 ,不然索引就原地踏步不變了。
如果start, end 爲負數,表示倒數的索引,例如 start=-1 ,則表示 len(string)-1 , start =-2表示 len(string)-2 。
例如:
s="abcdefghijk"
print("s>",s)
# 注意:start表示字符串的索引位置
print("s[0:2]>",s[0:2]) # 從start=0開始,截取第0位到第2位字符,不包含第2位
print("s[:2]>",s[:2]) # 從start=0開始,截取第0位到第2位字符,不包含第2位
print("s[2:]>",s[2:]) # 從第2位開始,截取到字符串結束
print("s[2:6]>",s[2:6]) # 從第2位開始,截取到第6位,不包含第6位
print("s[:]>",s[:]) # 截取整個字符串
print("s[::2]>",s[::2]) # 從第0位開始,截取到字符串結束,每隔1個字符截取
print("s[0:7:2]>",s[0:7:2]) # 從第0位開始,截取到第7位,每隔1個字符截取
print("s[8:14]>",s[8:14]) # 從第8位開始,截取到14位結束,不包含第14位
print("s[1:5:2]>",s[1:5:2]) # 從第1位開始,截取到第5位結束,每隔1個字符截取
print("s[1:4:2]>",s[1:4:2]) # 從第1位開始,截取到第4位結束,每隔1個字符截取
函數二:字符串轉大小寫函數 upper lower
格式:
s.upper () # 作用:返回一個字符串,把s 中的所有小寫轉爲大寫
s.lower() # 作用:返回一個字符串,把s 中所有大寫字母轉爲小寫
例如:
s="abcDEF"
print(s.upper())
print(s.lower())
函數三:字符串查找函數 find,從左邊開始查找,即第一次出現的位置
格式:
s.find(t) # 作用:返回在字符串s 中查找 t 子串第一次出現的位置下標,如不存在就返回 -1
例如:
s='111abcabdabc'
i=s.find("abc") # 顯示第一次出現的位置,即便abc出現了兩次
j=s.find("abd")
k=s.find("abj") # 子字符串未找到,返回-1
print(i,j,k)
執行結果如下:
3 6 -1
函數四:字符串查找函數 rfind(t),從右邊開始查找,即最後一次出現的位置
格式:
s.rfind(t) # 作用:返回在字符串 s 中查找 t 子串最後一次出現的位置下標,如不存在就返回 -1
例如:
s='111abcabdabc'
i=s.rfind("abc") # 顯示第最後一次出現的位置,即便abc出現了兩次
j=s.rfind("abd")
k=s.rfind("abj") # 子字符串未找到,返回-1
print(i,j,k)
執行結果如下:
9 6 -1
函數五:字符串查找函數 index(t)
格式:
s.index(t) # 作用:返回在字符串 s 中查找 t 子串第一個出現的位置下標,如不存在就出錯誤。
例如:
s='111abcabdabc'
i=s.index("abc") # 顯示第最後一次出現的位置,即便abc出現了兩次
j=s.index("abd")
k=s.index("abj") # 子字符串未找到,報錯
print(i,j)
index 函數與 find 函數功能完全一樣,不同的是要找的子串不存在時, index 會報錯誤,find 返回 -1, find 比 index 好用,建議使用 find 而不用 index 。
函數六:字符串判斷函數 startswith(t) ,endswith(t)
格式:
s.startswith(t) # 作用:判斷字符串s 是否以子串 t 開始,返回邏輯值。
s.endswith(t) # 作用:判斷字符串s 是否以子串 t 結束,返回邏輯值。
例如:
s='111abcabdabc'
s.startswith("11")
s.endswith("abc")
print(s.startswith("11"))
print(s.endswith("abc"))
執行結果如下:
True
True
顯然我們可以用 find 函數來編寫功能與 .startswith(t) 一樣的 myStartsWith(s,t) 函數:
startswith 函數的本質就是 find函數找到子字符串,且位置爲0,若找到,返回true;若找不到,則返回false
程序如下:
def myStartswith(s,t):
i=s.find(t)
if i==0:
return True
else:
return False
同理,我們也可以用rfind函數編寫myEndswith函數,程序如下:
def myEndswith(s,t):
i=s.rfind(t)
if i>0 and i=len(s)-len(t):
return True
else:
return False
函數七:字符串去掉空格函數 lstrip()、rstrip()、strip()
格式:
s.lstrip() # 作用:返回一個字符串,去掉了s 中左邊的空格
s.rstrip() # 作用:返回一個字符串,去掉了s 中右邊的空格
s.strip() # 作用:返回一個字符串,去掉了s 中左邊與右邊的空格,等同 s.lstrip ().().rstrip
例如:
s=" aa bb "
a=s.lstrip()
b=s.rstrip()
c=s.strip()
print(a,len(a))
print(b,len(b))
print(c,len(c))
執行結果如下:
aa bb 6
aa bb 6
aa bb 5
函數八:字符串分離函數 split(sep)
格式:
s.split(sep)
作用: 用sep分割字符串s,分割出的部分組成列表返回
其中sep是分隔符,結果是字符串s按sep字符串分割成多個字符串,這些字符串組成一個列表,即函數split調用後返回一個列表。例如:
s="hi limei"
w=s.split(" ")
print(w)
執行結果如下:
['hi', 'limei'] # 把字符串s按照空格分離開成一個列表
又例如:
s="abcabcabc"
w=s.split("ab")
print(w)
執行結果如下:
['', 'c', 'c', 'c']
例:編寫myStrip(s) 實現s.strip()
程序如下:
def myStrip(s):
t=""
i=0
while i<len(s):
if s[i]!=" ":
t=t+s[i]
i=i+1
return t
s=" abc "
print(len(s))
print(myStrip(s))