You are getting an empty list Data=[]
if you read an empty row. You try to get the first element from the list using Data[0]
,but because it's an empty list it doesn't have an element at position 0, so you get an 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
This will print out the Data
if IndexError
occours - you can see yourself that it prints an empty list:
f=open('file','r')
temp = []
for row in f.readlines():
Data = row.split()
try:
temp.append(float(Data[0]))
except IndexError:
print Data
You can use the with
statement to open the file, that automatically closes the file after being processed. Also you can loop over the file itself, without using readlines()
.
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: You are better of using the csv module:
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
is your friend. – Bumffor row in f.readlines():
or more simplyfor row in f
? – Interlay