On Dec 4, 2:14 pm, Horacius ReX <[EMAIL PROTECTED]> wrote: > Hi, I have a text file like this; > > 1 -33.453579 > 2 -148.487125 > 3 -195.067172 > 4 -115.958374 > 5 -100.597841 > 6 -121.566441 > 7 -121.025381 > 8 -132.103507 > 9 -108.939327 > 10 -97.046703 > 11 -52.866534 > 12 -48.432623 > 13 -112.790419 > 14 -98.516975 > 15 -98.724436 > > So I want to write a program in python that reads each line and > detects which numbers of the second column are the maximum and the > minimum. > > I tried with; > > import os, sys,re,string > > # first parameter is the name of the data file > name1 = sys.argv[1] > infile1 = open(name1,"r") > > # 1. get minimum and maximum > > minimum=0 > maximum=0 > > print " minimum = ",minimum > print " maximum = ",maximum > > while 1: > line = infile1.readline() > ll = re.split("\s+",string.strip(line)) > print ll[0],ll[1] > a=ll[0] > b=ll[1] > print a,b > if(b<minimum): > minimum=b > print " minimum= ",minimum > if(b>maximum): > maximum=b > print " maximum= ",maximum > > print minimum, maximum > > But it does not work and I get errors like; > > Traceback (most recent call last): > File "translate_to_intervals.py", line 20, in <module> > print ll[0],ll[1] > IndexError: list index out of range > > Could anybody help me ? > > Thanks
You're not guaranteed to have that 2 or even 1 element after splitting. If the line is empty or has 1 space you need to handle it. Also is there really a need for regex for a simple string split ? import sys infile = open(sys.argv[1], 'r') min, max = 0, 0 for each_line in infile.readlines(): if each_line.strip(): tmp = each_line.strip().split() try: b = tmp[1] except IndexError: continue if b < min: min = b if b > max: max = b -- http://mail.python.org/mailman/listinfo/python-list