Skip to main content
 首页 » 编程设计

在字符串中的特定字符序列之后选择字符的Pythonic方法

2025年05月04日26Leo_wl

我有一个字符串列表

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']