拆分Python字符串中的最后一个分隔符?

时间:2013-02-21 21:06:16

标签: python string list parsing split

在字符串中分隔符的 last 出现时拆分字符串的推荐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表示从结尾开始的最后一个。怎么办呢?

3 个答案:

答案 0 :(得分:247)

改为使用.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()一个最大值作为第二个参数,你可以分割出最右边的出现次数。

答案 1 :(得分:8)

您可以使用rsplit

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

从反向获取字符串。

答案 2 :(得分:3)

我这么做是为了好玩

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