320

在字符串中最后一次出现分隔符时拆分字符串的推荐 Python 习惯用法是什么?例子:

# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']

# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']

mysplit接受第二个参数,即要拆分的分隔符的出现。就像在常规列表索引中一样,-1表示最后一个。如何才能做到这一点?

4

3 回答 3

547

使用.rsplit() or.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()将最大值作为第二个参数,您可以仅拆分最右侧的出现。

于 2013-02-21T21:06:55.483 回答
37

您可以使用 rsplit

string.rsplit('delimeter',1)[1]

从反向获取字符串。

于 2018-03-15T16:40:10.320 回答
6

我只是为了好玩

    >>> s = 'a,b,c,d'
    >>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
    ['a,b,c', 'd']

注意:请参阅下面的第一条评论,该答案可能会出错。

于 2016-11-24T14:31:56.410 回答