以pythonic方式获取字符串末尾的数字

时间:2018-06-28 17:08:48

标签: string python-3.x

我正在使用python3.x。我正在尝试使用格式

的字符串结尾获取(int)数字
string_example_1 = l-45-98-567-567-12
string_example_2 = s-89-657

或通常是单个小写字母,后跟多个用'-'分隔的整数。我需要的是获取最后一个数字(在这种情况下为12和657)。我已经使用功能将其存档

def ending(the_string):
    out = ''
    while the_string[-1].isdigit():
        out = the_string[-1] + out
        the_string = the_string[:-1]
    return out

但是我敢肯定,必须有一种更Python化的方式来做到这一点。在以前的实例中,我通过执行类似的操作来手动检查字符串是否以我喜欢的方式开始

if st[0].isalpha() and st[1]=='-' and st[2].isdigit():
    statement...

2 个答案:

答案 0 :(得分:3)

我只是在-上分割字符串,进行最后的分割并将其转换为整数。

string_example_1 = "l-45-98-567-567-12"
string_example_2 = "s-89-657"

def last_number(s):
    return int(s.split("-")[-1])

print(last_number(string_example_1))
# 12
print(last_number(string_example_2))
# 657

答案 1 :(得分:1)

没有正则表达式,您可以反转字符串,在字符串仍为数字时从字符串中取出元素,然后反转结果。在Python中:

from itertools import takewhile

def extract_final_digits(s):
    return int(''.join(reversed(list(takewhile(lambda c: c.isdigit(), reversed(s))))))

但是最简单的方法是仅在定界符上分割,并在分割列表中获取最后一个元素。