我有一串没有特定图案的字符。我必须寻找一些特定的词然后提取一些信息。 目前,我一直在寻找字符串中最后一个数字的位置。
所以,例如if:
mystring="The total income from company xy was 12320 for the last year and 11932 in the previous year"
我想找出这个字符串中最后一个数字的位置。 所以在“70”位置结果应为“2”。
答案 0 :(得分:8)
您可以使用正则表达式执行此操作,这是一个快速尝试:
>>>mo = re.match('.+([0-9])[^0-9]*$', mystring)
>>>print mo.group(1), mo.start(1)
2 69
当然,这是一个基于0的位置。
答案 1 :(得分:3)
您可以使用生成器表达式在next
函数内循环遍历枚举:
>>> next(i for i,j in list(enumerate(mystring,1))[::-1] if j.isdigit())
70
或使用正则表达式:
>>> import re
>>>
>>> m=re.search(r'(\d)[^\d]*$',mystring)
>>> m.start()+1
70
答案 2 :(得分:1)
将字符串中的所有数字保存在数组中并弹出最后一个数字。
array = [int(s) for s in mystring.split() if s.isdigit()]
lastdigit = array.pop()
它比正则表达式方法更快,看起来比它更具可读性。
答案 3 :(得分:0)
if ( $insert = $mysqli->query ( "... your sql query ...") )
答案 4 :(得分:0)
您可以使用简单的正则表达式反转字符串并获得第一个匹配项:
s = mystring[::-1]
m = re.search('\d', s)
pos = len(s) - m.start(0)