pythonstring

Difference between find and index


I cannot understand the difference between find and index.

>>> line
'hi, this is ABC oh my god!!'
>>> line.find("o")
16
>>> line.index("o")
16

They always return the same result.


Solution

  • str.find returns -1 when it does not find the substring.

    >>> line = 'hi, this is ABC oh my god!!'
    >>> line.find('?')
    -1
    

    While str.index raises ValueError:

    >>> line.index('?')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: substring not found
    

    Both the functions behave the same way if a sub-string is found.