我试图运行我的程序,但遇到了一个错误:
Traceback (most recent call last):
File "C:\myquestions\questansgen-script.py", line 11, in <module>
load_entry_point('questansgen==0.1', 'console_scripts', 'questansgen')()
File "c:\Python36\lib\site-packages\click\core.py", line 610, in __call__
return self.main(*args, **kwargs)
File "c:\Python36\lib\site-packages\click\core.py", line 590, in main
rv = self.invoke(ctx)
File "c:\Python36\lib\site-packages\click\core.py", line 782, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\Python36\lib\site-packages\click\core.py", line 416, in invoke
return callback(*args, **kwargs)
File "C:\myquestions\questansgen\scripts\questansgen.py", line 22, in generate_trivia
questions = questions + article.generate_trivia_sentences()
File "C:\myquestions\questansgen\article.py", line 22, in generate_trivia_sentences
trivia = self.evaluate_sentence(sentence)
File "C:\myquestions\questansgen\article.py", line 100, in evaluate_sentence
trivia['similar_words'] = self.get_similar_words(replace_nouns[0])
File "C:\myquestions\questansgen\article.py", line 39, in get_similar_words
hypernym = synset.hypernyms()[0]
IndexError: list index out of range
以下是我正在实施的代码,其中发生错误:
Code file
请告诉我,我可以做些什么来避免此错误,并输入任意数量的文字进行处理。
答案 0 :(得分:1)
粗俗:try-except
def first_hypernym(ss):
try:
x = ss.hypernyms()[0]
except IndexError:
x = None
return x
单行:if-else
first_hypernym = None if not ss.hypernyms() else ss.hypernyms()[0]
要证明这一点:
>>> x = []
>>> y = None if not x else x[0]
>>> y
>>>
请参阅Best way to check if a list is empty
以煞费苦心的启发式/语言学方式:看https://github.com/alvations/pywsd/blob/master/pywsd/allwords_wsd.py#L29(免责声明:无耻插件)