Python寫一個(gè)字符串?dāng)?shù)字后綴部分的遞增函數(shù)
需求:
Python處理重名字符串,添加或遞增數(shù)字字符串后綴
- 對(duì)于2個(gè)重名的字符串,添加數(shù)字后綴,比如兩個(gè)重復(fù)的字符串
s1 = “name”,s2 = “name”,將s2的名稱設(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
也可以寫一個(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寫一個(gè)字符串?dāng)?shù)字后綴部分的遞增函數(shù)的文章就介紹到這了,更多相關(guān)Python遞增函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python并發(fā)編程之進(jìn)程間通信原理及實(shí)現(xiàn)解析
這篇文章主要為大家介紹了Python并發(fā)編程之進(jìn)程間通信原理及實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
Python運(yùn)用于數(shù)據(jù)分析的簡(jiǎn)單教程
這篇文章主要介紹了Python運(yùn)用于數(shù)據(jù)分析的簡(jiǎn)單教程,主要介紹了如何運(yùn)用Python來(lái)進(jìn)行數(shù)據(jù)導(dǎo)入、變化、統(tǒng)計(jì)和假設(shè)檢驗(yàn)等基本的數(shù)據(jù)分析,需要的朋友可以參考下2015-03-03
django框架模板中定義變量(set variable in django template)的方法分析
這篇文章主要介紹了django框架模板中定義變量(set variable in django template)的方法,結(jié)合實(shí)例形式分析了Django框架實(shí)現(xiàn)模板中定義變量與變量賦值相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
Python中的函數(shù)式編程:不可變的數(shù)據(jù)結(jié)構(gòu)
今天小編就為大家分享一篇關(guān)于Python中的函數(shù)式編程:不可變的數(shù)據(jù)結(jié)構(gòu),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
創(chuàng)建虛擬環(huán)境打包py文件的實(shí)現(xiàn)步驟
使用虛擬環(huán)境,可以為每個(gè)項(xiàng)目創(chuàng)建一個(gè)獨(dú)立的Python環(huán)境,每個(gè)環(huán)境都有自己的庫(kù)和版本,從而避免了依賴沖突,本文主要介紹了創(chuàng)建虛擬環(huán)境打包py文件的實(shí)現(xiàn)步驟,感興趣的可以了解一下2024-04-04

