[Tutor] manipulating data

Kent Johnson kent37 at tds.net
Wed Nov 7 14:52:39 CET 2007


Bryan Fodness wrote:
> I would like to have my data in a format so that I can create a contour plot.
> 
> My data is in a file with a format, where there may be multiple fields
> 
> field = 1
> 
> 1a	0

If your data is really this regular, it is pretty easy to parse. A 
useful technique is to access a file's next method directly. Something 
like this (not tested!):

f = open('data.txt')
fields = {} # build a dict of fields
try:
   while True:
     # Get the field line
     line = f.next()
     field = int(line.split()[-1]) # last part of the line as an int

     f.next() # skip blank line

     data = {} # for each field, map (row, col) to value
     for i in range(20): # read 20 data lines
       line = f.next()
       ix, value = f.split()
       row = int(ix[:-1])
       col = ix[-1]
       data[row, col] = int(value)

     fields[field] = data

     f.next()
except StopIteration:
   pass

This builds a dict whose keys are field numbers and values are 
themselves dicts mapping (row, col) pairs to a value.

> where,
> 
>                            a           b
>   a           b	                          a            b
> 10	0000000000|0000000000	0000000000|0000000000	0000000000|0000000000
> 9	0000000000|0000000000	0000000000|0000000000	0000000000|0000000000
> 8	0000011111|1111100000	0000000000|0000000000	0000000000|0000000000
> 7	0000011111|1111100000	0000001111|1111000000	0000000000|0000000000
> 6	0000011111|1111100000	0000001111|1111000000	0000000111|1110000000
> 5	0000011111|1111100000	0000001111|1111000000	0000000111|1110000000
> 4	0000011111|1111100000	0000001111|1111000000	0000000000|0000000000
> 3	0000011111|1111100000	0000000000|0000000000	0000000000|0000000000
> 2	0000000000|0000000000	0000000000|0000000000	0000000000|0000000000
> 1	0000000000|0000000000	0000000000|0000000000	0000000000|0000000000

I guess this is the intended output? Do you want to actually create a 
printed table like this, or some kind of data structure that represents 
the table, or what?

Kent


More information about the Tutor mailing list