使用.rsplit()或.rpartition()代替:
s.rsplit(',', 1)
s.rpartition(',')
Str.rsplit()允许您指定分割次数,而str.rpartition()只分割一次,但总是返回固定数量的元素(前缀、分隔符和后缀),并且对于单个分割情况更快。
演示:
>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')
这两个方法都从字符串的右边开始分割;通过给str.rsplit()一个最大值作为第二个参数,您可以分割右手最多的出现。
如果你只需要最后一个元素,但有可能分隔符不存在于输入字符串中,或者是输入中的最后一个字符,请使用以下表达式:
# last element, or the original if no `,` is present or is the last character
s.rsplit(',', 1)[-1] or s
s.rpartition(',')[-1] or s
如果你需要删除分隔符,即使它是最后一个字符,我将使用:
def last(string, delimiter):
"""Return the last element from string, after the delimiter
If string ends in the delimiter or the delimiter is absent,
returns the original string without the delimiter.
"""
prefix, delim, last = string.rpartition(delimiter)
return last if (delim and last) else prefix
这使用了string.rpartition()仅在存在分隔符时返回分隔符作为第二个参数,否则返回空字符串的事实。