Python寫(xiě)一個(gè)字符串?dāng)?shù)字后綴部分的遞增函數(shù)
需求:
Python處理重名字符串,添加或遞增數(shù)字字符串后綴
- 對(duì)于2個(gè)重名的字符串,添加數(shù)字后綴,比如兩個(gè)重復(fù)的字符串
s1 = “name”
,s2 = “name”
,將s2的名稱(chēng)設(shè)置為name_1
- 對(duì)應(yīng)3個(gè)或多個(gè)重名的字符串,數(shù)字部分實(shí)現(xiàn)遞增,初始時(shí)
s1=s2=s3=“name
”,重命名后得到s1=“name”
,s2=“name_1”
,s3=“name_2
”
要靈活處理字符串問(wèn)題,使用re模塊最為方便下面是一個(gè)對(duì)帶有下劃線+數(shù)字的后綴字符串遞增的方法
def increase_string_suffix(s, incr_num=1): ? ? """ ? ? 帶數(shù)字后綴"_d"的字符串自增方法,"name_1" 自增1 --> "name_2" ? ? Example ? ? ----------------- ? ? >>> s = "name_01" ? ? >>> increase_string_suffix(s, incr_num=2) ? ? 'name_03' ? ? """ ? ? suffix_searched = re.search(r"(_)(\d+)$", s) ? ? if suffix_searched: ? ? ? ? suffix_plus_1 = re.sub( ? ? ? ? ? ? r"(_)(\d+)$", ? ? ? ? ? ? lambda x: f"{x.group(1)}{str(int(x.group(2)) + incr_num).zfill(len(x.group(2)))}", ? ? ? ? ? ? s ? ? ? ? ) ? ? else: ? ? ? ? suffix_plus_1 = f"{s}_1" ? ? return suffix_plus_1
例子在代碼中可以直接運(yùn)行注釋的doc部分,參數(shù)s是要傳入的字符串,incr_num是一次要增加的步數(shù)
代碼中核心部分是re.sub方法,r"(_)(\d+)$"是匹配搜尋部分,()對(duì)匹配的部分進(jìn)行分組,x.group(1)是()匹配到的"",x.group(2)是匹配到的數(shù)字部分,zfill往左邊填0補(bǔ)上長(zhǎng)度,例如01→02而不會(huì)是01→2
也可以寫(xiě)一個(gè)遞減的,或是修改前綴的,
例如:
def increase_string_prefix(s, incr_num=1): ? ? """ ? ? 帶數(shù)字前綴"d-"的字符串自增方法,"1-name" 自增1 --> "2-name" ? ? Example ? ? ----------------- ? ? >>> s = "1-name" ? ? >>> increase_string_prefix(s, incr_num=1) ? ? '2-name' ? ? """ ? ? prefix_searched = re.search(r"^(\d+)(-)", s) ? ? if prefix_searched: ? ? ? ? prefix_plus_1 = re.sub( ? ? ? ? ? ? r"^(\d+)(-)", ? ? ? ? ? ? lambda x: f"{str(int(x.groups()[0]) + incr_num).zfill(len(x.groups()[0]))}{x.groups()[1]}", ? ? ? ? ? ? s ? ? ? ? ) ? ? else: ? ? ? ? prefix_plus_1 = f"1-{s}" ? ? return prefix_plus_1
對(duì)于更多的正則表達(dá)式使用方法,可以參考之前的這篇文章
到此這篇關(guān)于Python寫(xiě)一個(gè)字符串?dāng)?shù)字后綴部分的遞增函數(shù)的文章就介紹到這了,更多相關(guān)Python遞增函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用接口合并Excel表代碼實(shí)例
這篇文章主要介紹了Python調(diào)用接口合并Excel表代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法
這篇文章主要給大家介紹了關(guān)于Python中TypeError:unhashable?type:'dict'錯(cuò)誤的解決辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04python自動(dòng)化測(cè)試之Selenium詳解
這篇文章主要為大家詳細(xì)介紹了python自動(dòng)化測(cè)試之Selenium,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03python3.6環(huán)境安裝+pip環(huán)境配置教程圖文詳解
這篇文章主要介紹了python3.6環(huán)境安裝+pip環(huán)境配置教程圖文詳解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06Django權(quán)限機(jī)制實(shí)現(xiàn)代碼詳解
這篇文章主要介紹了Django權(quán)限機(jī)制實(shí)現(xiàn)代碼詳解,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02淺談Python 中整型對(duì)象的存儲(chǔ)問(wèn)題
這篇文章主要介紹了淺談Python 中整型對(duì)象的存儲(chǔ)問(wèn)題的相關(guān)資料,需要的朋友可以參考下2016-05-05