rfind bug ?

Stef Mientki stef.mientki at gmail.com
Wed Apr 21 07:09:27 EDT 2010


On 21-04-2010 12:33, Alf P. Steinbach wrote:
> * 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. :-)
>
thanks Alf,
that's indeed what I was missing.

cheers,
Stef

>
> Cheers,
>
> - Alf




More information about the Python-list mailing list