You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:00:06