rfind bug ?

Alf P. Steinbach alfps at start.no
Wed Apr 21 06:33:27 EDT 2010


* Chris Rebert:
> On Wed, Apr 21, 2010 at 2:59 AM, Stef Mientki <stef.mientki at gmail.com> wrote:
>> On 21-04-2010 10:56, Chris Rebert wrote:
>>> On Wed, Apr 21, 2010 at 1:51 AM, Stef Mientki <stef.mientki at gmail.com> wrote:
>>>> With the following code, I would expect a result of 5 !!
>>>>
>>>>>>> a= 'word1 word2 word3'
>>>>>>> a.rfind(' ',7)
>>>>>>>
>>>> 11
>>>>
>>>> Is this a bug ?
>>>>
>>> No. Don't you think someone would have found such an obvious bug by now?
>>>
>> if it's not a bug,
>> then the start index has no meaning ...
>> ... and some would call that a bug.
> 
> Ah, I neglected to take your use of .rfind()'s second parameter into account!
> 
> As can be interpolated from the part of the docs James quotes:
> s.rfind(' ', 7) === s[7:].rfind(' ') + 7 # overlooking the 'not present' case
> 
> That is, the second parameter to .rfind(), namely `start`, is relative
> to the *left* end of the string, not the right end. I can see how this
> might be unintuitive, but it does make the API more uniform.

It seems that the OP also thought it was relative to the left end of the string.

The difference is what it signifies: start of search, or end of search.

With rfind the "start" parameter signifies the end of the search, and 
conversely, the third parameter "end" signifies where the search starts. :-)


Cheers,

- Alf



More information about the Python-list mailing list