1

簡単なケース: '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']

ここでの課題は、上記の 2 つの入力のいずれかからそのようなリストを作成できる関数を作成する最も Pythonic な方法は何ですか? begin、end、および文字の入力を受け入れる関数である可能性がありますが、先行ゼロと、文字が数字の前後にある可能性があるという事実を考慮する必要があります。

4

1 に答える 1