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

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

string1 = "498results should get" 

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

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

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

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

  • Самый быстрый способ ранжирования предметов с несколькими значениями и весами
  • использование запросов с TLS не дает поддержки SNI
  • События мыши в WxPython TaskBarIcon на Mac OSX не запускаются
  • Как установить пакет xgboost в python (платформа Windows)?
  • Python скручен: с чего начать
  • Python, как вычислить периметр полигона с помощью объекта osgeo.ogr.Geometry
  • PyInstaller - нет модуля с именем
  • Преобразование данных JSON из pandas в определенную схему / формат JSON в python
  • 6 Solutions collect form web for “Как получить целочисленные значения из строки в Python?”

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

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

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

    Ответ от ChristopheD здесь: https://stackoverflow.com/a/2500023/1225603

     r = "456results string789" s = ''.join(x for x in r if x.isdigit()) print int(s) 456789 

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

     >>> import re >>> string1 = "498results should get" >>> [int(x.group()) for x in re.finditer(r'\d+', string1)] [498] 
     >>> import itertools >>> int(''.join(itertools.takewhile(lambda s: s.isdigit(), string1))) 

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

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

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

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

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

    возвращает:

     '123453120' 
    Python - лучший язык программирования в мире.