Python中如何根据起止值生成带前缀序列?以ABC0001-ABC0004为例
解决方案
要实现这种带前缀的数字序列展开,核心是拆分前缀和数字部分,利用range生成数字序列后再拼接回去,具体步骤如下:
- 拆分输入的起止字符串,得到起始项和结束项
- 提取公共前缀和起止数字(推荐用正则,适配不同长度的前缀和数字位)
- 将起止数字转为整数,用
range生成中间所有数字(注意range是左闭右开,所以结束数字要+1) - 把每个数字补零到原有的位数,再和前缀拼接成最终字符串
代码示例
import re # 你的起止输入字符串 start_end_str = "ABC0001-ABC0004" # 拆分起始和结束项 start_part, end_part = start_end_str.split('-') # 用正则匹配前缀和数字部分,适配任意字母前缀+数字的格式 pattern = re.compile(r'([A-Za-z]+)(\d+)') prefix, start_num_str = pattern.match(start_part).groups() _, end_num_str = pattern.match(end_part).groups() # 转换为整数 start_num = int(start_num_str) end_num = int(end_num_str) # 生成完整序列:补零到原数字的长度,再拼接前缀 sequence = [f"{prefix}{num:0{len(start_num_str)}d}" for num in range(start_num, end_num + 1)] # 输出结果,用顿号分隔 print('、'.join(sequence))
运行这段代码会直接输出:ABC0001、ABC0002、ABC0003、ABC0004
如果你的前缀和数字位数是固定的(比如前缀固定3位,数字固定4位),也可以不用正则,直接切片处理,比如:
start_end_str = "ABC0001-ABC0004" start_part, end_part = start_end_str.split('-') prefix = start_part[:3] start_num = int(start_part[3:]) end_num = int(end_part[3:]) sequence = [f"{prefix}{num:04d}" for num in range(start_num, end_num + 1)] print('、'.join(sequence))
这种写法更简洁,但通用性不如正则版本。
内容的提问来源于stack exchange,提问作者lelio
相关产品推荐
相关产品推荐

