Подтвердить что ты не робот

Как получить целочисленные значения из строки в Python?

Предположим, что у меня была строка

string1 = "498results should get" 

Теперь мне нужно получить только целые значения из строки, например 498. Здесь я не хочу использовать list slicing, потому что целые значения могут увеличиваться, как в этих примерах:

string2 = "49867results should get" 
string3 = "497543results should get" 

Итак, я хочу получить только целые значения из строки точно в том же порядке. Я имею в виду 498,49867,497543 от string1,string2,string3 соответственно.

Может ли кто-нибудь сообщить мне, как это сделать в одной или двух строках?

4b9b3361

Ответ 1

>>> import re
>>> string1 = "498results should get"
>>> int(re.search(r'\d+', string1).group())
498

Если в строке есть несколько целых чисел:

>>> map(int, re.findall(r'\d+', string1))
[498]

Ответ 3

Версия итератора

>>> import re
>>> string1 = "498results should get"
>>> [int(x.group()) for x in re.finditer(r'\d+', string1)]
[498]

Ответ 4

>>> import itertools
>>> int(''.join(itertools.takewhile(lambda s: s.isdigit(), string1)))

Ответ 5

если у вас несколько наборов чисел, это еще один вариант

>>> import re
>>> print(re.findall('\d+', 'xyz123abc456def789'))
['123', '456', '789']

его не полезно для строк чисел с плавающей запятой.

Ответ 6

Вот ваш однострочный, без использования каких-либо регулярных выражений, которые могут время от времени дорожать:

>>> ''.join(filter(str.isdigit, "1234GAgade5312djdl0"))

возвращает:

'123453120'

Ответ 7

def function(string):  
    final = ''  
    for i in string:  
        try:   
            final += str(int(i))   
        except ValueError:  
            return int(final)  
print(function("4983results should get"))