网站域名备案地址,石家庄做网站制作,行业网站建设详解,汉口网站制作设计需求#xff1a; Python处理重名字符串#xff0c;添加或递增数字字符串后缀
对于2个重名的字符串#xff0c;添加数字后缀#xff0c;比如两个重复的字符串s1 “name”, s2 “name”#xff0c;将s2的名称设置为name_1对应3个或多个重名的字符串#xff0c;数字部分实…需求 Python处理重名字符串添加或递增数字字符串后缀
对于2个重名的字符串添加数字后缀比如两个重复的字符串s1 “name”, s2 “name”将s2的名称设置为name_1对应3个或多个重名的字符串数字部分实现递增初始时s1s2s3“name”重命名后得到s1“name”, s2“name_1”, s3“name_2”
要灵活处理字符串问题使用re模块最为方便 下面是一个对带有下划线数字的后缀字符串递增的方法
def increase_string_suffix(s, incr_num1):带数字后缀_d的字符串自增方法name_1 自增1 -- name_2Example----------------- s name_01 increase_string_suffix(s, incr_num2)name_03suffix_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}_1return suffix_plus_1例子在代码中可以直接运行注释的doc部分参数s是要传入的字符串incr_num是一次要增加的步数 代码中核心部分是re.sub方法r(_)(\d)$是匹配搜寻部分()对匹配的部分进行分组x.group(1)是()匹配到的x.group(2)是匹配到的数字部分zfill往左边填0补上长度例如01→02而不会是01→2
也可以写一个递减的或是修改前缀的例如
def increase_string_prefix(s, incr_num1):带数字前缀d-的字符串自增方法1-name 自增1 -- 2-nameExample----------------- s 1-name increase_string_prefix(s, incr_num1)2-nameprefix_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 f1-{s}return prefix_plus_1对于更多的正则表达式使用方法可以参考这位博主的文章