Sie erhalten eine leere Liste Data=[]
, wenn Sie eine leere Zeile lesen. Sie versuchen, das erste Element aus der Liste mit Data[0]
zu erhalten, aber da es eine leere Liste ist, hat es kein Element an Position 0, so erhalten Sie eine IndexError
.
Data=''.split()
Data[0]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-686-0792b03cbbdf> in <module>()
----> 1 Data[0]
IndexError: list index out of range
Dieses aus den Data
wenn IndexError
occours drucken - Sie können selbst sehen, dass es eine leere Liste druckt:
f=open('file','r')
temp = []
for row in f.readlines():
Data = row.split()
try:
temp.append(float(Data[0]))
except IndexError:
print Data
Sie können die with
Anweisung verwenden, um die Datei zu öffnen, das schließt sich automatisch die Datei nach der Verarbeitung. Sie können auch die Datei selbst durchlaufen, ohne readlines()
zu verwenden.
with open(file,'r') as f:
for row in f:
Data = row.split()
try:
print Data[0]
except IndexError:
print 'You have an empty row'
EDIT: Sie sind besser, die CSV-Modul verwenden:
import csv
with open('file.csv', 'rb') as f:
reader = csv.reader(f, delimiter=' ')
print [row[0] for row in reader if len(row)]
>>>
['16', '17', '18', '20', '21', '22', '24', '25', '26']
['csv'] (http://docs.python.org/library/csv.html) ist dein Freund. –
... sollte das nicht 'für row in f.readlines():' oder einfacher 'für row in f' sein? – nneonneo