Python 3 Finding the last number in a string

匿名 (未验证) 提交于 2019-12-03 01:20:02

问题:

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.

回答1:

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


回答2:

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'


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!