2013-02-21 4 views
89

의 문자열을 마지막으로에 구분하는 데 권장되는 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 분할되는 분리가 발생하는 제 2 인자를. 일반 목록 인덱싱에서와 마찬가지로 -1은 마지막에서 마지막 것을 의미합니다. 어떻게 할 수 있습니까?

답변

161

사용 .rsplit() 또는 대신 .rpartition() : str.rpartition() 한 번만 분할하지만, 항상 요소의 고정 된 수의 반환 (접두사, & 후위 구분 기호)와 빠른 동안

s.rsplit(',', 1) 
s.rpartition(',') 

str.rsplit(), 당신은 분할 횟수를 지정할 수 있습니다 단일 분할 경우.

데모 :

>>> 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'] 
관련 문제