2.7- 字符串函數

函數一:字符串截取,字符串的子串 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)) 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章