IndexError: list index out of range
Ich bin mit Python 3.5, 32-bit auf Windows 10.
Während ich bin mir bewusst, dass die Fragen bezüglich dieser Fehlermeldung wurden gestellt und beantwortet Häufig, ich kann immer noch nicht herausfinden, warum mein code oder die entsprechenden .txt-Datei, die eigentlich zu diesem Fehler führen.
Der code ist eine 1:1 Kopie aus einem Python-Anfänger-Buch und ein Derivat von diesem code, wo ich nur änderte den Namen des Wörterbuchs und verwendet ein anderes .txt-Datei hat gut funktioniert.
Hier ist der code:
woerter={}
fobj=open("Woerterbuch.txt","r")
for line in fobj:
zuordnung=line.split(" ")
woerter[zuordnung[0]] = zuordnung[1]
fobj.close()
print(woerter)
Und hier ist die entsprechende .txt-Datei:
Spain Spanien
Germany Deutschland
Sweden Schweden
France Frankreich
Italy Italien
Dem code ergibt folgenden Fehler:
Traceback (most recent call last):
File "C:\Users\Christian\Desktop\Python-Programme\Dateiausleseprogramm2.py", line 5, in <module>
woerter[zuordnung[0]] = zuordnung[1]
IndexError: list index out of range
Vermutlich haben Sie leere Zeilen, oder Zeilen, die ohne Leerzeichen an, also
Dann
versuchen Sie, eine
Isolieren Sie die Eingabe-Zeile, stirbt Sie. Meine Vermutung ist, dass es dann keinen Speicherplatz haben, aber vielleicht ein tab-Zeichen.
Ja, es ist nur 5 Zeilen lang ist, weil es ist einfach nur ein Programm, dass ich geschrieben habe, für das Ziel der übung.
zuordnung
endet als eine Liste mit nur einem element.Dann
zuordnung[1]
versucht, Zugriff auf das zweite element einer Zeile mit nur 1. Es ist wahrscheinlich eine nachfolgende Zeilenumbruch in der text-Datei.versuchen Sie, eine
print(zuordnung)
Linie zwischen Ihren split()
und die woerter
Zuordnung. Dies kann Ihnen helfen, die Spur der Fehler. Ist Ihre woerterbuch.txt
nur 5 Zeilen lang ist?Isolieren Sie die Eingabe-Zeile, stirbt Sie. Meine Vermutung ist, dass es dann keinen Speicherplatz haben, aber vielleicht ein tab-Zeichen.
Ja, es ist nur 5 Zeilen lang ist, weil es ist einfach nur ein Programm, dass ich geschrieben habe, für das Ziel der übung.
InformationsquelleAutor Christian Singer | 2016-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre angegebenen code und die Datei nicht reproduzieren den Fehler. Allerdings, wenn ich eine weitere Zeile hinzufügen feed (leere Zeile) in die Datei, , dass produziert den Fehler, den Sie geben. Ich entfernt die führenden Leerzeichen in beiden Dateien, und ein paar Hinzugefügt tracing print-Anweisungen, um Ihren code:
Ohne die leere Zeile am Ende der Eingabe-Datei, die Ausgabe, die ich wollte:
Mit die leere Zeile kann ich Ihr problem reproduzieren. Die drucken Aussagen machen, die unmittelbare Ursache offensichtlich:
Beachten Sie, dass ich entfernt führende Leerzeichen aus der Daten-Datei, die Sie geschrieben: diese machen die erste Teilung " immer mit zwei weiteren Feldern folgende.
Richtig. Sie können die Eingabe mit der print - Anweisung Hinzugefügt habe ich innerhalb der Schleife.
Warum funktioniert der code, drucken Sie das file-Objekt? Dies scheint nicht, wie nützlich die Informationen für die meisten Zwecke.
Ich habe gerade herausgefunden, dass ich etwas verwirrt, eigentlich sollte es drucken (woerter), wie Sie bereits vorgeschlagen. Ich bearbeitete es.
Ich danke Ihnen sehr für Ihre Hilfe :-)!
InformationsquelleAutor Prune