[Tutor] manipulating data

Ricardo Aráoz ricaraoz at gmail.com
Thu Nov 8 13:34:48 CET 2007


Kent Johnson wrote:
> 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
> 

Or maybe just (untested) :

fields = {} # build a dict of fields
for line in open('data.txt') :
    if line :    # skip blank lines
	if line.split()[0] = 'field' :
            field = int(line.split()[-1])
        else :
            fields[field] = tuple(line.split())






More information about the Tutor mailing list