Python 3 Finding the last number in a string

2019-06-19 16:39发布

How can I find the last number in any big string?

For eg in the following string I want 47 as the output:

'tr bgcolor="aa77bb"td>font face="verdana"color="white" size="2">b>Total/b>/font>/td>\td>font face="verdana"color="white" size="2">b>47/b>/font>/td>/tr>'

PS: We don't know the number. The number 47 is just an example. It can be any number from 0 to 900.

2条回答
Evening l夕情丶
2楼-- · 2019-06-19 17:19
>>> import re
>>> text = 'tr bgcolor="aa77bb"td>font face="verdana"color="white" size="2">b>Total/b>/font>/td>\td>font face="verdana"color="white" size="2">b>47/b>/font>/td>/tr>'
>>> re.findall(r'\d+', text)[-1]
'47'

If you need to match floating points there's always this

For very long strings this is more efficient:

re.search(r'\d+', text[::-1]).group()[::-1]
查看更多
淡お忘
3楼-- · 2019-06-19 17:30

I guess I don't know enough about the implementation details / performance of finding a bunch of results and choosing the last, vs just finding the last to begin with (didn't do any performance comparisons); but, this very well might be faster:

>>> text = 'tr bgcolor="aa77bb"td>font face="verdana"color="white" size="2">b>Total/b>/font>/td>\td>font face="verdana"color="white" size="2">b>47/b>/font>/td>/tr>'
>>> import re
>>> re.search(r'(\d+)\D+$', text).group(1)
'47'
查看更多
登录 后发表回答