可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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'