2013-02-21 118 views
89

什么是推荐的Python成语在最后字符串分裂字符串中的分隔符?例如:分割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意味着从末到尾。如何才能做到这一点?

回答

161

使用.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()作为第二个参数的最大值,您可以分割右边最右边的事件。

2

我只是做了以此为乐

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