У меня возникли проблемы с некоторым кодом Python. У меня есть большой текстовый файл с именем «big.txt». Я повторил это в своем коде, чтобы отсортировать каждое слово в массиве (или списке), а затем повторить его снова, чтобы удалить любой символ, который не находится в алфавите. У меня также есть функция, называемая worddistance
, которая смотрит, как похожи два слова и возвращает результат впоследствии. У меня есть другая функция: autocorrect
. Я хочу передать эту функцию словом с ошибкой и напечатать предложение 'Did you mean...'
со словами, которые дали низкий балл по функции worddistance
(функция добавляет 1 к счетчику всякий раз, когда разница замечена - чем ниже оценка, тем больше похоже).
Как ни странно, я получаю ошибку:Ошибка индекса при сравнении строк - Python
"Index Error: string index out of range"
Я в недоумении на то, что происходит!
Мой код ниже.
Заранее спасибо за ответы,
Samuel Нотон
f = open("big.txt", "r")
words = list()
temp_words = list()
for line in f:
for word in line.split():
temp_words.append(word.lower())
allowed_characters = 'abcdefghijklmnopqrstuvwxyz'
for item in temp_words:
temp_new_word = ''
for char in item:
if char in allowed_characters:
temp_new_word += char
else:
continue
words.append(temp_new_word)
list(set(words)).sort()
def worddistance(word1, word2):
counter = 0
if len(word1) > len(word2):
counter += len(word1) - len(word2)
new_word1 = word1[:len(word2) + 1]
for char in range(0, len(word2) + 1) :
if word2[char] != new_word1[char]:
counter += 1
else:
continue
elif len(word2) > len(word1):
counter += len(word2) - len(word1)
new_word2 = word2[:len(word1) + 1]
for char in range(0, len(word1) + 1):
if word1[char] != word2[char]:
counter += 1
else:
continue
return counter
def autocorrect(word):
word.lower()
if word in words:
print("The spelling is correct.")
return
else:
suggestions = list()
for item in words:
diff = worddistance(word, item)
if diff == 1:
suggestions.append(item)
print("Did you mean: ", end = ' ')
if len(suggestions) == 1:
print(suggestions[0])
return
else:
for i in range(0, len(suggestions)):
if i == len(suggestons) - 1:
print("or " + suggestions[i] + "?")
return
print(suggestions[i] + ", ", end="")
return
На какой линии вы получаете эту ошибку – user3378649