it-swarm.com.de

wie bekomme ich den letzten Teil einer Zeichenfolge vor einem bestimmten Zeichen?

Ich versuche, den letzten Teil einer Zeichenfolge vor einem bestimmten Zeichen zu drucken. 

Ich bin mir nicht ganz sicher, ob ich die String-Methode .split () oder String-Slicing oder vielleicht etwas anderes verwenden soll. 

Hier ist ein Code, der nicht funktioniert, aber ich denke, zeigt die Logik: 

x = 'http://test.com/lalala-134'
print x['-':0] # beginning at the end of the string, return everything before '-'

Beachten Sie, dass die Zahl am Ende in der Größe variiert, sodass ich keine genaue Anzahl vom Ende der Zeichenfolge festlegen kann. 

48
user1063287

Sie suchen nach str.rsplit() , mit einem Limit:

print x.rsplit('-', 1)[0]

.rsplit() sucht am Ende der Eingabezeichenfolge nach der Teilungszeichenfolge, und das zweite Argument begrenzt, wie oft es nur einmal geteilt wird. 

Eine andere Option ist die Verwendung von str.rpartition() , die nur einmal geteilt wird:

print x.rpartition('-')[0]

Für die einmalige Aufteilung ist str.rpartition() auch die schnellere Methode. Wenn Sie mehr als einmal teilen müssen, können Sie nur str.rsplit() verwenden.

Demo:

>>> x = 'http://test.com/lalala-134'
>>> print x.rsplit('-', 1)[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rsplit('-', 1)[0]
'something-with-a-lot-of'

und dasselbe mit str.rpartition()

>>> print x.rpartition('-')[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rpartition('-')[0]
'something-with-a-lot-of'
92
Martijn Pieters

Der Unterschied zwischensplitundpartitionist split gibt die Liste ohne Trennzeichen zurück und teilt auf, wo immer Trennzeichen in Zeichenfolge stehen, d. H. 

x = 'http://test.com/lalala-134-431'

a,b,c = x.split(-)
print(a)
"http://test.com/lalala"
print(b)
"134"
print(c)
"431"

undpartitionteilt den String nur mit first delimiter auf und gibt nur 3 Werte in der Liste zurück 

x = 'http://test.com/lalala-134-431'
a,b,c = x.partition('-')
print(a)
"http://test.com/lalala"
print(b)
"-"
print(c)
"134-431"

wenn Sie den letzten Wert wünschen, können Sierpartitionverwenden. Es funktioniert auf dieselbe Weise, findet jedoch Trennzeichen vom Ende des Strings

x = 'http://test.com/lalala-134-431'
a,b,c = x.partition('-')
print(a)
"http://test.com/lalala-134"
print(b)
"-"
print(c)
"431"
0
dvijparekh