У меня есть следующий код, чтобы проверить, находится ли слово в словаре. Если слово не существует, вызов словаря.meaning возвращает None. Проблема в том, что он также выплевывает сообщение об ошибке "Ошибка: произошла следующая ошибка: индекс списка вне диапазона". Я сделал некоторые исследования, и оказалось, что я мог бы использовать комбинацию try :, за исключением: но независимо от того, что я пытался, сообщение об ошибке все еще распечатывается. Вот тестовый пример, который показывает проблему. Как я могу заставить этот код работать без отображения ошибки индекса?
Код:
def is_word(word):
from PyDictionary import PyDictionary
dictionary=PyDictionary()
rtn = (dictionary.meaning(word))
if rtn == None:
return(False)
else:
return (True)
my_list = ["no", "act", "amp", "xibber", "xyz"]
for word in my_list:
result = is_word(word)
if result == True:
print(word, "is in the dictionary")
else:
print(word, "is NOT in the dictionary")
Выход:
no is in the dictionary
act is in the dictionary
amp is in the dictionary
Error: The Following Error occured: list index out of range
xibber is NOT in the dictionary
Error: The Following Error occured: list index out of range
xyz is NOT in the dictionary
Я предполагаю, что ваш try/except block был вокруг неправильного блока, или вы не поймали его правильно, но это сложно сказать без вашего кода.
Попробуйте поместить try/except в раздел кода, который будет ошибкой (в этом случае проверка словаря).
РЕДАКТИРОВАТЬ:
Виноват. Ошибка печатается в библиотеке PyDictionary
. Вы должны уметь замолчать, делая meaning(word, disable_errors=True)
.
def is_word(word):
from PyDictionary import PyDictionary
dictionary = PyDictionary()
try:
output = dictionary.meaning(word, disable_errors=True)
except:
return False
else:
return bool(output)
my_list = ["no", "act", "amp", "xibber", "xyz"]
for word in my_list:
result = is_word(word)
if result:
print("{} is in the dictionary".format(word))
else:
print("{} is NOT in the dictionary".format(word))
Второе редактирование: использование https://github.com/tasdikrahman/vocabulary.
from vocabulary.vocabulary import Vocabulary
vb = Vocabulary()
my_list = ["no", "act", "amp", "xibber", "xyz"]
for word in my_list:
if vb.meaning(word):
print("{} is in the dictionary".format(word))
else:
print("{} is NOT in the dictionary".format(word))