Extract value and average

Scott David Daniels Scott.Daniels at Acm.Org
Mon Jun 8 13:39:12 EDT 2009


Steven D'Aprano wrote:
> ...
> Assuming no DIHED value will ever be split over two lines:
> 
> data = open(filename)
> values = []
> for line in data:
>     if line and line.strip():  # ignore blanks
>          words = line.strip().split()
            words = line.split() # does the same as above
>          try:
>              i = words.index("DIHED")
>          except IndexError:
>              continue
>          values.append(float(words[i+2]))
> mean = sum(values)/len(values)


Or similarly (with error checks):
     values = []
     with open('/imports/file.txt') as data:
         for line in data:
	    parts = line.split(' DIHED ') # assume spaces around DIHED
             if len(parts) > 1:
                 if len(parts) > 2: # make sure only one DIHED found
                     raise ValueError('Line has DIHED twice: %s' % line)
                 # break the post-DIHED part into '=', <value>, <rest>
                 words = parts[1].split(None, 2)
                 values.append(float(tokens[1]))
     mean = sum(values) / len(values)


--Scott David Daniels
Scott.Daniels at Acm.Org



More information about the Python-list mailing list