例如“example123”将为123,“ex123ample”将为None,“123example”将为None。
答案 0 :(得分:17)
您可以使用re
模块中的正则表达式:
import re
def get_trailing_number(s):
m = re.search(r'\d+$', s)
return int(m.group()) if m else None
r'\d+$'
字符串指定要匹配的表达式,由special symbols组成:
\d
:一个数字(0-9)+
:上一项中的一项或多项(即\d
)$
:输入字符串的结尾换句话说,它试图在字符串的末尾找到一个或多个数字。 search()
函数返回一个Match
对象,其中包含有关匹配的各种信息,如果它与请求的内容不匹配,则返回None
。例如,group()
方法返回与正则表达式匹配的整个子字符串(在本例中为一些数字)。
最后一行的三元if
返回匹配的数字转换为数字或无,具体取决于Match对象是否为None。
答案 1 :(得分:14)
我会使用正则表达式,例如/(\d+)$/
。这将匹配并捕获一个或多个数字,锚定在字符串的末尾。
答案 2 :(得分:-2)
哎呀,纠正(抱歉,我错过了这一点)
你应该做这样的事情;)
导入RE模块
import re
然后写一个正则表达式,“搜索”表达式。
s = re.search("[a-zA-Z+](\d{3})$", "string123")
如果匹配则返回“123”,否则返回NoneType。
s.group(0)