简单的例子:对于一个给定的字符串输入,比如'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']
现在的挑战是,创建一个函数以从上面两个输入中的任何一个建立这样的列表的最python的方法是什么?它可能是一个接受begin、end和letter输入的函数,但是它必须考虑到leading zeros,以及字母可以在数字前面或后面的事实。你知道吗
我不确定是否有一种更为pythonic的方法,但是使用一些regex和python的^{} 语法,我们可以相当容易地处理您的输入。这里有一个解决方案:
输出:
相关问题 更多 >
编程相关推荐