如何从Python中的string获取整数值?

假设我有一个string

string1 = "498results should get" 

现在我只需要像498string中的整数值。 这里我不想使用list slicing因为整数值可能会像这些例子一样增加:

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

所以我只想从string中得到只有整数值完全相同的顺序。 我的意思是498,49867,497543来自string1,string2,string3 498,49867,497543

任何人都可以让我知道如何在一两行吗?

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

如果string中有多个整数:

 >>> 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))) 

如果你有多组数字,那么这是另一种select

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

它对浮点数字串没有好处。

这是你的一行,不用任何正则expression式,有时会变得昂贵:

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

收益:

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