简单案例:对于给定的字符串输入,如“1-12A”,我想输出一个类似的列表
['1A', '2A', '3A', ... , '12A']
这很容易,我可以使用如下代码:
import re
input = '1-12A'
begin = input.split('-')[0] #the first number
end = input.split('-')[-1] #the last number
letter = re.findall(r"([A-Z])", input)[0] #the letter
[str(x)+letter for x in range(begin, end+1)] #works only if letter is behind number
但有时我会遇到输入像'B01-B12'这样的情况,我希望输出是这样的:
['B01', 'B02', 'B03', ... , 'B12']
现在的挑战是,创建一个函数以从上述两个输入中的任何一个构建此类列表的最 Pythonic 方式是什么?它可能是一个接受开始、结束和字母输入的函数,但它必须考虑前导零,以及字母可能在数字前面或后面的事实。