我有一个字符串列表
lst = ['foo000bar111', 'foo000bar1112', 'foo000bar1113']
我想从每个字符串中提取最后的数字以获取
nums = ['111', '1112', '1113']
我不关心字符串前面的其他数字(本例中为 000)。没有空格,所以我不能 lst.split() 并且我相信在没有空格的情况下做类似的事情是很困难的。这些数字的长度不同,所以我不能只执行 str[-3:]。对于它的值(value),我关心的数字之前的字符在每个字符串中都是相同的,并且数字在字符串的末尾。
我正在寻找一种方式来表达“好的,阅读直到找到 bar 然后告诉我字符串的其余部分是什么。”我想出的最好的方法是 [str[(str.index('bar')+3):] for str in lst],它有效,但我怀疑这是最 pythonic 的方式去做。
请您参考如下方法:
你的方法是准确的。您也可以尝试使用 re
>>> import re
>>> lst = ['foo000bar111', 'foo000bar1112', 'foo000bar1113']
>>> [re.search(r'(\d+$)',i).group() for i in lst]
['111', '1112', '1113']
你也可以试试rindex
>>> [i[i.rindex('r')+1:] for i in lst]
['111', '1112', '1113']
