difference between find and index
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.
Also find is only available for strings where as index is available for lists, tuples and strings
>>> somelist
['Ok', "let's", 'try', 'this', 'out']
>>> type(somelist)
<class 'list'>
>>> somelist.index("try")
2
>>> somelist.find("try")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'find'
>>> sometuple
('Ok', "let's", 'try', 'this', 'out')
>>> type(sometuple)
<class 'tuple'>
>>> sometuple.index("try")
2
>>> sometuple.find("try")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'find'
>>> somelist2
"Ok let's try this"
>>> type(somelist2)
<class 'str'>
>>> somelist2.index("try")
9
>>> somelist2.find("try")
9
>>> somelist2.find("t")
5
>>> somelist2.index("t")
5