網(wǎng)站首頁 編程語言 正文
需求:
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
”
要靈活處理字符串問題,使用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á)式使用方法,可以參考之前的這篇文章
原文鏈接:https://blog.csdn.net/Moelimoe/article/details/122747365
相關(guān)推薦
- 2022-01-15 解決npm install 報(bào)錯(cuò) npm ERR! code 128 npm ERR! comman
- 2022-10-03 C++內(nèi)存泄漏的檢測(cè)與實(shí)現(xiàn)詳細(xì)流程_C 語言
- 2022-06-15 Python實(shí)現(xiàn)RSA加密解密_python
- 2022-07-20 C語言通過三步翻轉(zhuǎn)法實(shí)現(xiàn)單詞倒置詳解_C 語言
- 2022-12-23 C++中關(guān)于constexpr函數(shù)使用及說明_C 語言
- 2022-08-05 C語言簡(jiǎn)明介紹常見關(guān)鍵字的用法_C 語言
- 2022-08-14 Oracle?system/用戶被鎖定的解決方法_oracle
- 2022-12-21 Kotlin協(xié)程基礎(chǔ)元素梳理分析_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支