[Python-3000] Droping find/rfind? (original) (raw)

Josiah Carlson jcarlson at uci.edu
Wed Aug 23 20:52:54 CEST 2006


"Steven Bethard" <steven.bethard at gmail.com> wrote:

On 8/23/06, Barry Warsaw <barry at python.org> wrote: > I agree with Tim -- if we have to get rid of one of them, let's get > rid of index/rindex and keep find/rfind. Catching the exception is > much less convenient than testing for -1. Could you post a simple example or two? I keep imagining things like:: index = text.index(...) if 0 <= index: ... do something with index ... else: ...

A more-often-used style is...

index = text.find(...)
if index >= 0:
    ...

Compare this with the use of index:

try:
    index = text.index(...)
except ValueError:
    pass
else:
    ...

or even

index = 0
while 1:
    index = text.find(..., index)
    if index == -1:
        break
    ...

compared with

index = 0
while 1:
    try:
        index = text.index(..., index)
    except ValueError:
        break
    ...

try: index = text.index(...) ... do something with index ... except ValueError: ...

In these not uncommon cases, the use of str.index and having to catch ValueError is cumbersome (in terms of typing, indentation, etc.), and is about as susceptible to bugs as str.find, which you have shown by putting "... do something with index ..." in the try clause, rather than the else clause.



More information about the Python-3000 mailing list