获取Python中最后一个字符出现后面的所有内容

28

我看过其他语言的类似问题,但找不到Python的解决方法,也许有一个特定的名字我不知道。 我想在最后一个“-”字符后面拆分一行,我的字符串会像以下这样:

POS--K    100    100    001    -    1462
我想从这个字符串中取出最后一个-后面的数字,即1462。我不知道如何实现这一点,在只有一个这样的字符时,我会使用以下方法:
last_number = last_number[last_number.index('-')+1:]
当有未知数量的“-”存在且结束数字的长度可能是任意长度时,我该如何实现这一点?

3
或者 str.rpartition()... - Martijn Pieters
2个回答

67

你差不多就快到达目标了。 index 是从左边开始查询,而 rindex 是从右边开始查询:

>>> s = 'POS--K    100    100    001    -    1462'
>>> s[s.rindex('-')+1:]
'    1462'

4
非常简单,就像 Python 中的大多数东西一样 :) 完美,谢谢。 - twigg
1
注意 - 如果未找到“-”,此方法将引发“ValueError:未找到子字符串”。而@BhargavRao的替代答案则在未找到“-”时返回整个字符串。 - maurera

23
你可以这样做,如果你想要最后一个 - 后面的数字。
>>> s = "POS--K    100    100    001    -    1462"
>>> a = s.split('-')[-1]
>>> a
'    1462'
>>> a.strip()
'1462'

正如Padraic在评论中提到的那样,您可以使用rsplit

>>> s = "POS--K    100    100    001    -    1462"
>>> a = s.rsplit('-',1)[1]
>>> a
'    1462'
>>> a.strip()
'1462'

然而,如果没有该字符的出现,rsplit 方案将无法运行,因为数组返回中只会有一个元素。


5
s.rsplit('-',1)[1] 可以更加高效。 - Padraic Cunningham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接