如何从Python中的string获取整数值?
假设我有一个string
string1 = "498results should get"
现在我只需要像498
string中的整数值。 这里我不想使用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"))