10
votes

For example:

>>> s = 'python'
>>> s.index('')
0
>>> s.index('p')
0
2

2 Answers

18
votes

This is because the substring of length 0 starting at index 0 in 'python' is equal to the empty string:

>>> s[0:0]
''

Of course every substring of length zero of any string is equal to the empty string.

5
votes

You can see "python" as "the empty string, followed by a p, followed by fifteen more empty strings, followed by a y, followed by forty-two empty strings, ...".

Point being, empty strings don't take any space, so there's no reason why it should not be there.

The index method could be specified like this:

s.index(t) returns a value i such that s[i : i+len(t)] is equal to t

If you substitute the empty string for t, this reads: "returns a value i such that s[i:i] is equal to """. And indeed, the value 0 is a correct return value according to this specification.