Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to get the last part of a string before a certain character?

I am trying to print the last part of a string before a certain character.

I'm not quite sure whether to use the string .split() method or string slicing or maybe something else.

Here is some code that doesn't work but I think shows the logic:

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

Note that the number at the end will vary in size so I can't set an exact count from the end of the string.

like image 406
user1063287 Avatar asked Apr 06 '13 13:04

user1063287


1 Answers

You are looking for str.rsplit(), with a limit:

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

.rsplit() searches for the splitting string from the end of input string, and the second argument limits how many times it'll split to just once.

Another option is to use str.rpartition(), which will only ever split just once:

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

For splitting just once, str.rpartition() is the faster method as well; if you need to split more than once you can only use str.rsplit().

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' 

and the same with str.rpartition()

>>> print x.rpartition('-')[0] http://test.com/lalala >>> 'something-with-a-lot-of-dashes'.rpartition('-')[0] 'something-with-a-lot-of' 
like image 169
Martijn Pieters Avatar answered Sep 18 '22 14:09

Martijn Pieters