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