Как найти один номер в строке в Python?

У меня есть файл, называемый файлом FILE-1.txt или FILE-340.txt. Я хочу иметь возможность получить номер из имени файла. Я обнаружил, что могу использовать

numbers = re.findall(r'\d+', '%s' %(filename))

чтобы получить список, содержащий номер, и использовать числа [0], чтобы получить номер как строку... Но если я знаю, что это всего лишь одно число, кажется, что это круговое и ненужное создание списка для его получения. Есть ли другой способ сделать это?


Изменить: Спасибо! Думаю, теперь у меня есть другой вопрос. Вместо того, чтобы получать строку, как получить целое число?

Ответ 1

Используйте search вместо findall:

number = re.search(r'\d+', filename).group()

В качестве альтернативы:

number = filter(str.isdigit, filename)

Ответ 2

Добавление в комментарий F.J, если вы хотите использовать int, вы можете использовать:

numbers = int(re.search(r'\d+', filename).group())

Ответ 3

Если вы хотите, чтобы ваша программа была эффективной

используйте это:

num = filename.split("-")[1][:-4]

это будет работать только на примере, который вы показали

Ответ 4

Другой способ просто для удовольствия:

In [1]: fn = 'file-340.txt'

In [2]: ''.join(x for x in fn if x.isdigit())
Out[2]: '340'

Ответ 5

В ответ на ваш новый вопрос вы можете применить string к int:

>>>int('123')
123