2013-02-21 1 views
89

Was ist die empfohlene Python-Idiom zum Aufteilen einer Zeichenfolge auf letzten Auftreten des Trennzeichens in der Zeichenfolge? Beispiel:Auf letztes Trennzeichen in Python-String aufteilen?

# 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 nimmt ein zweites Argument, das das Auftreten des Trennzeichens ist, geteilt werden. Wie bei der regulären Indexierung der Liste bedeutet -1 die letzte vom Ende. Wie kann das gemacht werden?

Antwort

161

Verwenden .rsplit() oder .rpartition() statt:

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

str.rsplit() können Sie festlegen, wie oft zu spalten, während str.rpartition() nur einmal spaltet aber immer wieder eine feste Anzahl von Elementen (Präfix, Begrenzer & Postfix) und ist schneller für den einzelnen Split-Fall.

Demo:

>>> 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') 

Beide Verfahren beginnen Aufspalten von der rechten Seite der Zeichenkette; Indem Sie als zweites Argument str.rsplit() ein Maximum geben, können Sie nur die rechtshäufigsten Vorkommen aufteilen.

2

Ich habe gerade dies für Spaß

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