ここでは、文字列検索アルゴリズムの一種 である KMP法 の python3 での実装例をご紹介します。
文字列 S から単語 P を探し、S 中に P が含まれる場合、S における一致位置の(先頭の)インデックスをリストで返します(つまり、PS 内に複数ある場合を想定しています)。

S = "isawsquirrelnearmysquirrelababhouseoh"
P1 = "my"
P2 = "squirrel"
P3 = "ab"

def createTable(pattern):
    m = len(pattern)
    pattern_table = [0] * m
    j = 0
    for i in range(1, m):
        while j > 0 and pattern[i] != pattern[j]:
            j = pattern_table[j-1]
        if pattern[i] == pattern[j]:
            j += 1
        pattern_table[i] = j
    return pattern_table

def kmpSrach(string, pattern):
    n, m = len(string), len(pattern)
    res_table = []
    pattern_table = createTable(pattern)
    j = 0 # p内の参照index
    for i in range(n):
        while j > 0 and string[i] != pattern[j]:
            j = pattern_table[j-1]
        if string[i] == pattern[j]:
            j += 1
        if j == len(pattern):
            res_table.append(i - m + 1)
            j = pattern_table[j - 1]
    return res_table

res1 = kmpSrach(S, P1)
print(res1) # --> [16]

res2 = kmpSrach(S, P2)
print(res2) # --> [4, 18]

res3 = kmpSrach(S, P3)
print(res3) # --> [26, 28]


お役に立てれば幸いです!