Idiom for "last word in a string"

Peter Otten __peter__ at web.de
Wed Sep 23 21:22:39 CEST 2009


akonsu wrote:

> On Sep 23, 2:47 pm, Grant Edwards <inva... at invalid.invalid> wrote:
>> I recently ran across this construct for grabbing the last
>> (whitespace delimited) word in a string:
>>
>> s.rsplit(None,1)[1]
>>
>> It was somewhat obvious from the context what it was supposed
>> to do, but it took a bit of Googling to figure out exactly what
>> was going on.
>>
>> When I want the last word in a string, I've always done this:
>>
>> s.split()[-1]
>>
>> I was wondering what the advantage of the rsplit(None,1)[1]
>> approach would be other than inducing people to learn about the
>> maxsplit argument that is accepted by the split() methods?
>>
>> --
>> Grant Edwards                   grante             Yow! I want a
>> VEGETARIAN at               BURRITO to go ... with
>> visi.com            EXTRA MSG!!
> 
> hello,
> perhaps rsplit generates as many elements in the list as absolutely
> necesary compared to the whole list returned by split()?
> konstantin

Indeed, and if the string is long it has a measurable effect:

$ python -m timeit -s"s = 'oneword '*1000" "s.rsplit(None, 1)[-1]"
100000 loops, best of 3: 2.23 usec per loop
$ python -m timeit -s"s = 'oneword '*1000" "s.split()[-1]"
1000 loops, best of 3: 191 usec per loop

Peter




More information about the Python-list mailing list