字符串是Python中基本的數(shù)據(jù)類型,幾乎在每個(gè)Python程序中都會(huì)使用到它。
創(chuàng)新互聯(lián)長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為永康企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,永康網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
▍1、Slicing
slicing切片,按照一定條件從列表或者元組中取出部分元素(比如特定范圍、索引、分割值)
▍2、****strip()
strip()方法用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列。
在使用strip()方法時(shí),默認(rèn)去除空格或換行符,所以#號(hào)并沒有去除。
可以給strip()方法添加指定字符,如下所示。
此外當(dāng)指定內(nèi)容不在頭尾處時(shí),并不會(huì)被去除。
第一個(gè)\n前有個(gè)空格,所以只會(huì)去取尾部的換行符。
最后strip()方法的參數(shù)是剝離其值的所有組合,這個(gè)可以看下面這個(gè)案例。
最外層的首字符和尾字符參數(shù)值將從字符串中剝離。字符從前端移除,直到到達(dá)一個(gè)不包含在字符集中的字符串字符為止。
在尾部也會(huì)發(fā)生類似的動(dòng)作。
▍3、****lstrip()
移除字符串左側(cè)指定的字符(默認(rèn)為空格或換行符)或字符序列。
同樣的,可以移除左側(cè)所有包含在字符集中的字符串。
▍4、rstrip()
移除字符串右側(cè)指定的字符(默認(rèn)為空格或換行符)或字符序列。
▍5、****removeprefix()
Python3.9中移除前綴的函數(shù)。
和strip()相比,并不會(huì)把字符集中的字符串進(jìn)行逐個(gè)匹配。
▍6、removesuffix()
Python3.9中移除后綴的函數(shù)。
▍7、****replace()
把字符串中的內(nèi)容替換成指定的內(nèi)容。
▍8、****re.sub()
re是正則的表達(dá)式,sub是substitute表示替換。
re.sub則是相對(duì)復(fù)雜點(diǎn)的替換。
和replace()做對(duì)比,使用re.sub()進(jìn)行替換操作,確實(shí)更高級(jí)點(diǎn)。
▍9、****split()
對(duì)字符串做分隔處理,最終的結(jié)果是一個(gè)列表。
當(dāng)不指定分隔符時(shí),默認(rèn)按空格分隔。
此外,還可以指定字符串的分隔次數(shù)。
▍10、****rsplit()
從右側(cè)開始對(duì)字符串進(jìn)行分隔。
▍11、****join()
string.join(seq)。以string作為分隔符,將seq中所有的元素(的字符串表示)合并為一個(gè)新的字符串。
▍12、****upper()
將字符串中的字母,全部轉(zhuǎn)換為大寫。
▍13、****lower()
將字符串中的字母,全部轉(zhuǎn)換為小寫。
▍14、capitalize()
將字符串中的首個(gè)字母轉(zhuǎn)換為大寫。
▍15、****islower()
判斷字符串中的所有字母是否都為小寫,是則返回True,否則返回False。
▍16、isupper()
判斷字符串中的所有字母是否都為大寫,是則返回True,否則返回False。
▍17、****isalpha()
如果字符串至少有一個(gè)字符并且所有字符都是字母,則返回 True,否則返回 False。
▍18、isnumeric()
如果字符串中只包含數(shù)字字符,則返回 True,否則返回 False。
▍19、isalnum()
如果字符串中至少有一個(gè)字符并且所有字符都是字母或數(shù)字,則返回True,否則返回 False。
▍20、count()
返回指定內(nèi)容在字符串中出現(xiàn)的次數(shù)。
▍21、****find()
檢測指定內(nèi)容是否包含在字符串中,如果是返回開始的索引值,否則返回-1。
此外,還可以指定開始的范圍。
▍22、rfind()
類似于find()函數(shù),返回字符串最后一次出現(xiàn)的位置,如果沒有匹配項(xiàng)則返回 -1。
▍23、startswith()
檢查字符串是否是以指定內(nèi)容開頭,是則返回 True,否則返回 False。
**
**
▍24、****endswith()
檢查字符串是否是以指定內(nèi)容結(jié)束,是則返回 True,否則返回 False。
▍25、****partition()
string.partition(str),有點(diǎn)像find()和split()的結(jié)合體。
從str出現(xiàn)的第一個(gè)位置起,把字符串string分成一個(gè)3 元素的元組(string_pre_str,str,string_post_str),如果string中不包含str則 string_pre_str==string。
▍26、center()
返回一個(gè)原字符串居中,并使用空格填充至長度width的新字符串。
▍27、ljust()
返回一個(gè)原字符串左對(duì)齊,并使用空格填充至長度width的新字符串。
▍28、rjust()
返回一個(gè)原字符串右對(duì)齊,并使用空格填充至長度width的新字符串。
▍29、f-Strings
f-string是格式化字符串的新語法。
與其他格式化方式相比,它們不僅更易讀,更簡潔,不易出錯(cuò),而且速度更快!
▍30、swapcase()
翻轉(zhuǎn)字符串中的字母大小寫。
▍31、zfill()
string.zfill(width)。
返回長度為width的字符串,原字符串string右對(duì)齊,前面填充0。
參考文獻(xiàn):
字符串 :在python中是作為序列存在的,序列中的元素具有從左到右的順序,并根據(jù)他們的相對(duì)位置進(jìn)行讀取和儲(chǔ)存。嚴(yán)格意義來說,字符串是一系列單個(gè)字符組成的序列,其他類型的序列還包括列表和元組。在一串字符兩側(cè)加上雙引號(hào)或者單引號(hào)即可創(chuàng)建字符串。
注意 :如果字符串中需要出現(xiàn)雙引號(hào)或者單引號(hào),則有兩種方法。
1)使用轉(zhuǎn)義字符(\)進(jìn)行轉(zhuǎn)義。
2)將雙引號(hào)和單引號(hào)配合使用,即若向想打印單引號(hào),可以使用雙引號(hào)表示字符串,在字符串中只用一個(gè)單引號(hào)。反之亦然。
在一個(gè)字符串前面加上r;則會(huì)自動(dòng)為字符串中的反斜杠\轉(zhuǎn)義,使其只代表一個(gè)反斜杠\。但是注意,原始字符串最后不能有反斜杠\,否則會(huì)發(fā)生語法錯(cuò)誤。如果非要在原始字符串最后加上,則可以寫為\。
運(yùn)行結(jié)果為:
有時(shí)我們需要?jiǎng)?chuàng)建一個(gè)跨行的字符串,則可以使用三引號(hào)來創(chuàng)建。
運(yùn)行結(jié)果為
1)可以通過len()函數(shù)得到序列的長度。
運(yùn)行結(jié)果為:
2)可以通過索引操作得到序列的各個(gè)元素值。python中序列的索引是從0開始依次向后推移。
運(yùn)行結(jié)果為:
3)python還支持反向索引,是從最后一個(gè)向前推移的。-1是指序列中的最后一個(gè)元素值,-len(str)是指該序列的第一個(gè)元素值。
運(yùn)行結(jié)果為:
4)序列還支持一種 分片(slice) 的操作,這是一種能夠一步提取整個(gè)分片的方法。
分片可以看作是字符串中一部提取出其中一部分的方法。其一般形式為:X[I:J],表示從X序列中取出第I個(gè)元素到不包含第J個(gè)元素的部分,結(jié)果為返回一個(gè)新的對(duì)象。
運(yùn)行結(jié)果為:
在一個(gè)分片(slice)中,左邊界默認(rèn)為0。同時(shí)應(yīng)注意負(fù)偏移量在分片中的邊界,也應(yīng)為左側(cè)數(shù)字比右側(cè)數(shù)字小。拷貝全部字符串的用法為str[:]。
運(yùn)行結(jié)果為:
5)作為一個(gè)序列,字符串還支持用“+”來合并字符串。
運(yùn)行結(jié)果為:
6) 不可變性 ,python中字符串具有不可變性,在創(chuàng)建一個(gè)字符串之后不可以通過對(duì)其某一位置進(jìn)行賦值而改變該字符串,但可以通過創(chuàng)建一個(gè)新的字符串并以同一個(gè)變量名命名。
運(yùn)行結(jié)果為:
7)除了一般的序列操作,字符串還有一些其特有的操作方法。
如find()方法,可以用于查找一個(gè)子字符串,可以返回該子字符串的索引值。但如果存在多個(gè)符合的子字符串,只會(huì)返回第一個(gè)索引值。如果不存在該子字符串,則返回-1。replace(S1,S2)方法會(huì)將字符串中的S1替換為S2。
運(yùn)行結(jié)果如下:
關(guān)于字符串,python還有許多內(nèi)置函數(shù),可以通過調(diào)用dir()函數(shù)來查看。
已有字符串形式的函數(shù)名稱,那么如何調(diào)用這個(gè)函數(shù)呢?
通過調(diào)用內(nèi)置函數(shù)locals()和globals()返回的字典對(duì)象,就可以可以獲得名稱與對(duì)象的映射關(guān)系。其中,locals()僅在全局范圍內(nèi)調(diào)用時(shí)可以獲得函數(shù)對(duì)象。 我們來看以下的例子。
需要注意的是,使用上述方法通過字符串調(diào)用函數(shù)時(shí),為了系統(tǒng)的安全,防止執(zhí)行任意函數(shù),需要對(duì)函數(shù)名做一些處理,也就是使用統(tǒng)一的前綴為這些函數(shù)命名。例如在上述例子中,使用前綴cmd_+函數(shù)名的形式定義函數(shù)(cmd_help,cmd_sum)。
在傳入函數(shù)名字符串時(shí),只傳入函數(shù)名的后半部分(如"help","sum"),由程序添加前綴后組成完整的函數(shù)名,再調(diào)用該函數(shù)。
對(duì)于類的成員函數(shù),則可以使用getattr()獲得類成員函數(shù)。
上述代碼通過字符串調(diào)用了類成員函數(shù),與前一段代碼執(zhí)行的結(jié)果相同。
此外,還可以使用字典將字符串與函數(shù)對(duì)應(yīng)起來調(diào)用,缺點(diǎn)就是每增加一個(gè)函數(shù)需要相應(yīng)在字典對(duì)象中添加相應(yīng)的鍵值,增加代碼維護(hù)工作量。
以上代碼在Python 3.6以上運(yùn)行通過。