2017-04-18 1 views
0

Ich habe versucht, mein Programm zu laufen, aber über einen Fehler kam:Python3: Wie aufzulösen, Liste außerhalb der Bound-Fehler?

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 

Hier ist der Code, dass ich bin der Umsetzung, in der der Fehler auftritt:
Code file

Bitte, lassen Sie mich wissen, Was kann ich tun, um diesen Fehler zu vermeiden und eine beliebige Menge Text zur Verarbeitung einzugeben?

+0

Das Ende des Rückverfolgungs fehlt (was die ultimative Ausnahme enthält). – lenz

+0

oh ja .. lass mich es bearbeiten –

+0

@lenz done..please überprüfen Sie es jetzt –

Antwort

1

Crude Weg: try-except

def first_hypernym(ss): 
    try: 
     x = ss.hypernyms()[0] 
    except IndexError: 
     x = None 
    return x 

One-Liner: if-else

first_hypernym = None if not ss.hypernyms() else ss.hypernyms()[0] 

den Punkt zu beweisen:

>>> x = [] 
>>> y = None if not x else x[0] 
>>> y 
>>> 

Siehe 012.317.


In einer sorgfältig Heuristik/Linguistik Weg: Schauen Sie sich https://github.com/alvations/pywsd/blob/master/pywsd/allwords_wsd.py#L29 (Disclaimer: schamlose Stecker)

Verwandte Themen