TypeError Python: строковые индексы должны быть целыми числами - PullRequest
0 голосов
/ 24 апреля 2020

Я пытался закодировать алгоритм сопоставления с образцом. Это наивно только с небольшой оптимизацией. Но Python показывает «Строковые индексы должны быть целыми числами». Переменная l oop, конечно, является целым числом, но я до сих пор не могу понять проблему! Это не первый мой раз в Python, но я никогда не сталкивался с такой неоднозначностью раньше. Вот мой код, кто-нибудь может мне помочь, пожалуйста?

def check(text,pattern):
    n=-1
    for i in range(len(pattern)):
        if pattern[0]==text[i]:
            n=i
            break
    if pattern==text:
        return [1,n]
    else:
        return [0,n]


shifts=[]

def match(pattern,text):
    i=0
    while i<(len(text)-len(pattern)+1):
        if text[i]==pattern[0]:
            #print(i,i+len(pattern),text[i,i+5])
            j=check(text[i,i+len(pattern)],pattern)
            if j[0]==1:
                shifts.append(i)
                print('Match | Shift with',shifts[-1])
            if j[-1]!=-1:
                i=j[-1]
            else:
                i=i+len(pattern)
        else:
            i+=1

1 Ответ

2 голосов
/ 24 апреля 2020

проблема в определении среза, в JS вы указываете срез через запятую, а в python с:

используйте следующую строку:

j=check(text[i: i+len(pattern)],pattern)
...