Yes. Write a loop using s.index('yourstring', start)
Update after finding a big fat -1 ... didn't I write some code???
Here's my attempt at redemption, which allows non-overlapping if desired, and is tested to the extent shown:
>>> def nindex(haystack, needle, n, overlapping=True):
... delta = 1 if overlapping else max(1, len(needle))
... start = -delta
... for _unused in xrange(n):
... start = haystack.index(needle, start+delta)
... return start
...
>>> for n in xrange(1, 11):
... print n, nindex('abcdefacbdea', 'a', n)
...
1 0
2 6
3 11
4
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 5, in nindex
ValueError: substring not found
>>> for olap in (True, False):
... for n in (1, 2):
... print str(olap)[0], n, nindex('abababab', 'abab', n, olap)
...
T 1 0
T 2 2
F 1 0
F 2 4
>>> for n in xrange(1, 8):
... print n, nindex('abcde', '', n)
...
1 0
2 1
3 2
4 3
5 4
6 5
7
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 5, in nindex
ValueError: substring not found
>>>