Как мне найти одно число в строке в Python? - PullRequest
11 голосов
/ 23 ноября 2011

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

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

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


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

Ответы [ 5 ]

18 голосов
/ 23 ноября 2011

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

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

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

number = filter(str.isdigit, filename)
2 голосов
/ 23 ноября 2011

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

numbers = int(re.search(r'\d+', filename).group())
1 голос
/ 23 ноября 2011

Еще один способ просто для удовольствия:

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

In [2]: ''.join(x for x in fn if x.isdigit())
Out[2]: '340'
1 голос
/ 23 ноября 2011

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

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

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

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

0 голосов
/ 20 декабря 2012

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

>>>int('123')
123
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...