On Dec 3, 10:45 pm, Bevan Jenkins <[EMAIL PROTECTED]> wrote: > Hello, > > I have recently discovered the python language and am having a lot of > fun getting head around the basics of it. > However, I have run into a stumbling block that I have not been able > to overcome, so I thought I would ask for help. > <Overview> > I am trying to import a text file that has the following format: > 02/01/2000 @ 00:00:00 0.983896 Q10 T2 > 03/01/2000 @ 00:00:00 0.557377 Q10 T2 > 04/01/2000 @ 00:00:00 0.508871 Q10 T2 > 05/01/2000 @ 00:00:00 0.583196 Q10 T2 > 06/01/2000 @ 00:00:00 0.518281 Q10 T2 > when there is missing data: > 12/09/2000 @ 00:00:00 Q151 T2 > 13/09/2000 @ 00:00:00 Q151 T2 > > I have cobbled together some code which imports the data. The next > step is to create an array in which each column contains a years worth > of values. Thus, if i have 6 years of data (2001-2006 inclusive), > there will be six columns, with 365 rows (not all years have a full > data set and may only have say 340 days of data. > <The question> > In the code below > print answer[j,1] is giving me the right answer but i can't write it > to an array. > any suggestions welcomed. > > This is what I have: > flow=[] > flowdate=[] > yeardate=[] > uniqueyear=[] > #flow_order= > flow_rank=[] > icount=[] > p=[] > > filename=r"C:\Documents and Settings\bevanj\Desktop\flow_duration.tsf" > linesep ="\n" > > # read in whole file > tempdata = open( filename).read() > # break into lines > tempdata = string.split( tempdata, linesep ) > # for each record, get the field values > for i in range( len( tempdata)): > # split into the lines > fields = string.split( tempdata[i]) > if len(fields)>5: > flowdate.append(fields[0]) > list =string.split(fields[0],"/") > yeardate.append(list[2]) > flow.append(float(fields[3])) > answer=column_stack((flowdate,flow)) > > for rows in yeardate: > if rows not in uniqueyear: > uniqueyear.append(rows) > > #print answer[:,0] #date > flow_order=empty((0,0),dtype=float) > #for yr in enumerate(uniqueyear): > for iyr,yr in enumerate(uniqueyear): > for j, val, in enumerate (answer[:,0]): > flowyr=string.split(val,"/") > if int(flowyr[2])==int(yr): > print answer[j,1] > #flow_order =
Maybe you're looking for something more in the line of: fInput = open('tst.txt') dictObj = {} """{ Year_Key: { DayKey: FloatValue}}""" for each_line in fInput.readlines(): if each_line.strip(): line = each_line.strip().split() if len(line) == 6: if dictObj.has_key(line[0].split('/')[-1]): tmpDict = dictObj[line[0].split('/')[-1]] tmpDict[line[0]] = line[3] else: dictObj[line[0].split('/')[-1]] = {line[0]:line[3]} fInput.close() -- http://mail.python.org/mailman/listinfo/python-list