Python 如何摆脱 PyDictionary 错误消息

Dav*_*ews 1 python dictionary python-3.x

我有以下代码来检查字典中是否有单词。如果该单词不存在,则调用dictionary.meaning将返回None。问题是它还会发出错误消息“错误:发生以下错误:列表索引超出范围”。我做了一些研究,看来我可以使用 try:, except: 的组合,但无论我尝试什么,错误消息仍然会打印出来。这是一个显示问题的测试用例。如何使该代码工作而不显示索引错误?

代码:

    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")
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

Jen*_*ton 5

我猜你的 try/ except 块位于错误的块周围,或者你没有正确捕获它,但如果没有你的代码,很难判断。

尝试将 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))
Run Code Online (Sandbox Code Playgroud)

第二次编辑:使用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))
Run Code Online (Sandbox Code Playgroud)