上篇對python中的字元串進行了列舉和簡單說明,但這些方法太多,逐一背下效率實在太低,下麵我來對這些方法安裝其功能進行總結: 1.字母大小寫相關(中文無效) 1.1 S.upper() -> string 返回一個字母全部大寫的副本 1.2 S.lower() -> string 返回一個字母全是 ...
上篇對python中的字元串內置方法進行了列舉和簡單說明,但這些方法太多,逐一背下效率實在太低,下麵我來對這些方法按照其功能進行總結:
1.字母大小寫相關(中文無效)
1.1 S.upper() -> string
返回一個字母全部大寫的副本
1.2 S.lower() -> string
返回一個字母全是小寫的副本
1.3 S.swapcase() -> string
返回一個字母大小寫轉換後的副本
1.4 S.title() -> string
將單詞的首字母大寫,即為所謂的標題
方框里是中文的編碼,可以發現 s 還是大寫了,說明會無視其他類型的字元,找到英文單詞就將其首字母大寫
1.6 S.capitalize() -> string
將字元串的首字母大寫,要註意不是所有單詞,註意和上面的區別
而且當字元串的首字元不是字母的時候是無效的
1.5 S.isupper() -> bool
判斷字元串內的字母是否全是大寫,字元串中必須要有字母,返回布爾值
和其他字元混合時情況如下
會無視其他字元,只對字母進行判斷
1.6 S.islower() -> bool
判斷字元串內的字母是否全是小寫,字元串中必須要有字母,返回布爾值
和大寫判斷是相對應的,這裡不繼續舉例了。
1.7 S.istitle() -> bool
判斷字元串是否符合標題格式,返回布爾值,關於python字元串中何為標題上面也是詳細介紹了,這裡不多說。
2.字元串組成字元判斷
字元串內的字元除了是英文字母之外,還可以有其他字元,有一些方法可以對字元串的組成字元進行判斷
2.1 S.isalpha() -> bool
判斷字元串是否全是由字母組成,返回布爾值
只有是全字母才行,有數字和中文等都不行
2.2 S.isdigit() -> bool
判斷字元串是否全是由數字組成,返回布爾值
和上面類似,不多說明
2.3 S.isalnum() -> bool
判斷字元串是否全是由字母和數字組成,返回布爾值
是上面兩種判斷的合併
2.4 S.isspace() -> bool
判斷字元串是否都是由空字元組成,返回布爾值
空字元不意味著字元串為空,如空格,\n 等特殊字元都算是空字元
3.字元串是否是以某特定字元開頭或結尾的判斷
3.1 S.startswith(prefix[, start[, end]]) -> bool
判斷是否是以某特定字元開頭,返回布爾值
預設是從第一個字元開始,也就是索引值為0開始,可以用索引來指定對某個範圍的字元進行判斷
3.2 S.endswith(suffix[, start[, end]]) -> bool
判斷是否是以某特定字元結尾,返回布爾值
和上面類似,不多解釋
關於字元串中帶判斷的就是這麼多,下麵總結一下究竟可以判斷什麼:
1.字元串里的字母是否全是小寫或大寫
2.字元串是否符合標題格式的判斷
3.字元串的組成是否是全字母,全數字,或全是字母和數字,或者全是空字元
4.字元串是否是以給定的字元開頭或結尾
4.在字元串內尋找給定字元
4.1 S.find(sub [,start [,end]]) -> int
在原字元串內尋找給定的字元,找到了的第一個,返回其索引值,沒找到返回-1
註意是從左向右尋找,找到的第一個,像這裡的 o ,在原字元串有多個,但只返回了第一個的索引值,另外當給的字元不只一個時,按給的字元串的第一個字元作為基準點,如這裡的 co 返回的就是 c 的索引值。當然可以指定範圍,但指定範圍其並不意味會重新計算索引值,得到的依然是相對於整個字元串的索引。
4.2 S.rfind(sub [,start [,end]]) -> int
與上面的相同,只不過是從右往左尋找。
4.3 S.index(sub [,start [,end]]) -> int
和 find() 方法基本一樣,只不過 find() 找不到時返回的是-1,而 index() 找不到是會報錯。
4.4 S.rindex(sub [,start [,end]]) -> int
同理,這個是從右往左找
5.字元串出現的計數
和尋找類似,不過上面介紹的尋找的方法都只是找到第一個,如果我想知道某個特定的字元串在原字元中出現了多少次的時候怎麼辦,就可以使用計數了。
5.1 S.count(sub[, start[, end]]) -> int
這個方法會找到範圍內所有指定的子字元串,返回其出現的次數,沒找到的話則返回0
6.字元的替換
註意,雖然說是替換,但原字元串是不可變的,我在上篇也說過,字元串的所有方法都沒有改變原字元串本身,都是返回了一個新的對象。
所謂的替換,只是針對於返回對象的效果而已。
5.1 S.replace(old, new[, count]) -> string
可以看出原字元串本身是不變的,只是返回了一個新對象,這個對象在記憶體之中,如果後面要有利用這個新對象的話,可以將其賦值給變數,當然也可以當做函數的參數直接傳參,但傳參的時候要註意數據類型。
其中,count 指定要替換的次數,不指定則全部替換
7.字元串中的對齊和填充等
這裡的操作類似於在world中編輯文字,所以可以聯想理解。
7.1 S.ljust(width[, fillchar]) -> string
左對齊
首先要體現對齊的效果要有一個前提,那就是那一行不能是滿的,否則無論怎麼對齊也沒有用,而在python中,一個字元串對象預設就是占滿一行的,其行寬就是字元串是長度。
但是,當我強制聲明這一行的寬度是多少,而這個寬度(width)大於原字元串的長度(小於無效,但不會報錯),此時對齊就有效果了。
為了體現效果我將游標放上去了,否則都是空格看不出來。
我們將一行的寬度設置為15,而原字元串我用 len()內置函數得出其長度,可以知道原字元串長度為11。當我指定一行長為15,並設置左對齊,右邊的多出來的位置就預設用空格填充了,當然我們也可以指定用什麼填充(fillchar),但只能是字元串類型。