[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