2016-05-04 7 views
0
infile = open("/Users/name/Downloads/points.txt", "r") 
line = infile.readline() 
while line != "": 
    line = infile.readline() 
    wordlist = line.split() 
    x_co = float(wordlist[0]) 
    y_co = float(wordlist[1]) 

Ich schaute mich um, fand aber tatsächlich keine hilfreiche Hilfe für mein Problem.Textdatei importieren - Listenindex außerhalb des Bereichs

Ich habe eine TXT-Datei mit x (erste Spalte) und y (zweite Spalte) Koordinaten (siehe Bild). möchte ich alle x und y getrennt Koordinate, aber wenn ich meinen Code ausführen bekomme ich immer eine Fehlermeldung:

x_co = float(wordList[0]) 
IndexError: list index out of range 

Danke für die Hilfe!

Textfile with the coordinates

+3

1. Sie Parsen Sie niemals Ihre erste Zeile. 2. Sie prüfen, ob 'line =" "' * vor * gelesen und analysiert wird. Was ist, wenn die nächste 'readline' die leere ist? – usr2564301

Antwort

0

Besser können Sie auf diese Weise tun:

infile = open("/Users/name/Downloads/points.txt", "r") 
for line in infile: 
    if line: 
     wordlist = line.split() 
     x_co = float(wordlist[0]) 
     y_co = float(wordlist[1]) 
+0

Es scheint großartig zu funktionieren, aber ich versuche, aus meinen Fehlern zu lernen. Warum habe ich diesen Fehler? – bvdabjorn

+0

bvdabjorn: Siehe Kommentar von @Rad Lexus unter Ihrer Frage warum. – martineau

+0

(Fühlen Sie sich frei, Ihre eigene Erklärung hinzuzufügen, da Kommentare jederzeit gelöscht werden können.) Seien Sie gewarnt, dass die Zeile 'if line:' irreführend ist! Selbst wenn eine Zeile in der Datei leer ist, enthält sie immer noch eine Rückgabe. Entfernen Sie entweder die gesamte Zeile (und nehmen Sie an, dass die Eingabedatei wohlgeformt ist) oder fügen Sie zusätzliche Prüfungen nach dem 'Teilen' hinzu (und dann müssen die' Float'-Umwandlungen überprüft werden). – usr2564301

1
filename = "/Users/name/Downloads/points.txt" 
with open(filename) as infile: 
    for line in infile: 
     wordlist = line.split() 
     x_co = float(wordlist[0]) 
     y_co = float(wordlist[1]) 

with automatisch behandelt Datei

Weitere solche idiomatischen Möglichkeiten in Python, schließen read this

+1

Hier ist noch eins: die gesamte innere Schleife braucht 'x_co, y_co = [float (x) für x in line.split()]' – usr2564301

Verwandte Themen