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

167 python string parsing split list

在字符串中最后一次出现的分隔符上拆分字符串的推荐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']
Run Code Online (Sandbox Code Playgroud)

mysplit采用第二个参数,即要分割的分隔符的出现.像常规列表索引一样,-1意味着从最后开始.如何才能做到这一点?

Mar*_*ers 296

使用.rsplit().rpartition()代替:

s.rsplit(',', 1)
s.rpartition(',')
Run Code Online (Sandbox Code Playgroud)

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')
Run Code Online (Sandbox Code Playgroud)

两种方法都从字符串的右侧开始分割; 通过给出str.rsplit()最大值作为第二个参数,您可以分割出最右侧的出现次数.


Viv*_*han 13

你可以使用rsplit

string.rsplit('delimeter',1)[1]
Run Code Online (Sandbox Code Playgroud)

从反向获取字符串.


ViK*_*KiG 5

我只是为了好玩

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

  • “只是为了好玩”,但也是非常错误的,因为如果分隔符不仅仅是单个字符或重复字符,那么您的分割最多会选择错误的分割点。 (3认同)