Python高頻面試題——如何在字符串中刪除指定字符
關(guān)于python刪除字符串是面試python測試開發(fā)工程師的一個(gè)經(jīng)典問題。問題很簡單,但是一下子就能測試出來被面試者是否能夠熟練的進(jìn)行python相關(guān)編碼工作!
對(duì)于有些臨時(shí)抱佛腳的同學(xué)來講,一看刪除,很自然就說用remove 、del相關(guān)方法,聽到這里,就知道面試者根本不知道這個(gè)答案啦!因?yàn)閷?duì)于這個(gè)問題,remove 、del根本無效!有的同學(xué)回答:使用strip函數(shù),很顯然這些同學(xué)對(duì)字符串a(chǎn)pi有些了解,但是對(duì)于面試官來說,我們能夠判斷出,這些同學(xué)編碼經(jīng)驗(yàn)有限!我們就先來了解一下strip函數(shù)。
strip()函數(shù)
Python 的 strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列。實(shí)際工作中,只移除字符串開頭和結(jié)尾的部分字符應(yīng)用場景極其有限。
例如代碼
str ="abc,ddd,ffff,ee"
print(str.strip( 'ee' ))
print(str.strip( 'abc' ))
print(str.strip( 'ddd' ))
分別輸出:
abc,ddd,ffff,
,ddd,ffff,ee
abc,ddd,ffff,ee
可以看到strip對(duì)于刪除尾部的ee 和頭部的abc是能夠符合我們預(yù)期需求的,但是當(dāng)刪除字符串中間的ddd,就會(huì)失??!
另外還有l(wèi)strip()、rstrip()函數(shù)和strip()函數(shù)的用法相似,只不過lstrip()是去掉左邊的(頭部),rstrip()是去掉右邊的(尾部)
replace()函數(shù)
那么我們應(yīng)該怎樣解決刪除中間字符串這個(gè)問題呢?答案是用replace()函數(shù)!看到這里可能有的同學(xué)會(huì)說replace是替換的意思啊,怎么會(huì)用來進(jìn)行刪除操作呢?沒錯(cuò),replace是進(jìn)行替換操作的,但是如果我們把要?jiǎng)h除的字符串替換為空值,不就巧妙地解決了這個(gè)問題嘛!
print(str.replace( 'ddd','' ))
輸出:abc,,ffff,ee
完全符合預(yù)期!
re.sub 函數(shù)
隨著大家對(duì)python編碼的不斷深入,大家會(huì)遇到更復(fù)雜的需求:通過正則表達(dá)式來刪除字符串,那么該如何處理呢?跟據(jù)我多年的面試經(jīng)驗(yàn)來看,如果在面試過程中能夠回答出這個(gè)問題的同學(xué),那么python編碼是過關(guān)的,應(yīng)對(duì)python接口自動(dòng)化測試或者UI自動(dòng)化測試是能夠勝任的。在這里我也不啰嗦了,直接給大家答案,使用re.sub 函數(shù)即可,我們還是以字符串str ="abc,ddd,ffff,ee" 為例,用正則刪除字符串=",ddd,ffff," (這個(gè)正則應(yīng)用的例子比較簡單,在這里我只是給大家來舉例如何使用正則的方法來刪除指定的字符串),代碼如下:
import re
str ="abc,ddd,ffff,ee"
print(re.sub(r',.*,', '', str))
輸出:abcee
符合預(yù)期!
通過strip()函數(shù)、replace()函數(shù)和re.sub ()函數(shù)大概率就可以評(píng)定出面試測試開發(fā)人員的基本python編碼能力,而且屢試不爽!