Разбить строку и просто получить номер в Python? - PullRequest
10 голосов
/ 29 декабря 2010

У меня есть строка типа "GoTo: 7018 6453 12654\n" Я просто хочу получить число примерно так ['7018', '6453', '12654'], я пытаюсь использовать регулярное выражение, но не могу разбить строку, чтобы получить только число, вот мой код:

Образец 1:

splitter = re.compile(r'\D');
match1 = splitter.split("GoTo: 7018 6453 12654\n")

my output is: ['', '', '', '', '', '', '', '', '7018', '6453', '12654', '']

Образец 2:

splitter = re.compile(r'\W');
match1 = splitter.split("GoTo: 7018 6453 12654\n")

my output is: ['GoTo', '', '7018', '6453', '12654', '']

Ответы [ 5 ]

13 голосов
/ 29 декабря 2010

Если все ваши числа являются положительными целыми числами, вы можете сделать это без регулярных выражений, используя метод isdigit () :

>>> text = "GoTo: 7018 6453 12654\n"
>>> [token for token in text.split() if token.isdigit()]
['7018', '6453', '12654']
6 голосов
/ 29 декабря 2010
>>> re.findall(r'\d+', 'GoTo: 7018 6453 12654\n')
['7018', '6453', '12654']
4 голосов
/ 29 декабря 2010
>>> import re
>>> re.findall("[0-9]+", "GoTo: 7018 6453 12654\n")
['7018', '6453', '12654']
>>> 
2 голосов
/ 29 декабря 2010

Вы можете следовать вашему текущему методу в примере 1 вместе с этим кодом:

filter (lambda a: a != '', match1)
1 голос
/ 29 декабря 2010

Попробуйте это:

import re
splitter = re.compile(r'\d+')
match1 = splitter.findall("GoTo: 7018 6453 12654\n")
print match1
...