объединить произведенное число конвертировать в int - PullRequest
1 голос
/ 02 ноября 2011

Пример:

import re
rx = re.compile("{0-9}")
Var1 =bla bla bla 54467
Var2= rx.findall(Var1)
number = ''.join(Var2)

У меня вопрос, как преобразовать числовую переменную в int, я пытаюсь сделать это с помощью int (), но получаю ошибку. Или есть способ создать такую ​​переменную, как int, с помощью другого метода?

Ответы [ 2 ]

4 голосов
/ 02 ноября 2011

Не используйте регулярные выражения для этого. filter() намного проще и быстрее:

>>> s = "bla bla bla 54467 bla"
>>> int(filter(str.isdigit, s))
54467

Приведенный выше код объединит все числа в строке в одну строку. Если вы не хотите этого, используйте

>>> s = "bla 1223 bla 54467 bla"
>>> map(int, filter(str.isdigit, s.split()))
[1223, 54467]

Те же рецепты, адаптированные для Python 3.x:

>>> s = "bla bla bla 54467 bla"
>>> int("".join(filter(str.isdigit, s)))
54467
>>> s = "bla 1223 bla 54467 bla"
>>> list(map(int, filter(str.isdigit, s.split())))
[1223, 54467]
4 голосов
/ 02 ноября 2011

Ваше регулярное выражение неверно. Следующие работы:

import re
rx = re.compile("[0-9]") # note the change
Var1 ='bla bla bla 54467 bla'
Var2= rx.findall(Var1)
number = int(''.join(Var2))
print number

Обратите внимание, что приведенный выше код найдет все цифры внутри строки независимо от того, являются ли они последовательными, и объединит их в одно число. Чтобы получить группы последовательных цифр, измените свое регулярное выражение на "[0-9]+".

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