The sum of numbers in a line from a file
sffjunkie at gmail.com
sffjunkie at gmail.com
Mon Feb 24 06:48:23 EST 2014
On Thursday, 20 February 2014 16:22:00 UTC, kxjakkk wrote:
> Let's say I have a sample file like this:
> Name 1 2 3 4 5 6 7 8
> ------------------------------------------------------------------------
> name1 099-66-7871 A-F Y 100 67 81 59 98
> name2 999-88-7766 A-F N 99 100 96 91 90
> name3 000-00-0110 AUD 5 100 28 19 76
> name4 398-72-3333 P/F Y 76 84 49 69 78
> name5 909-37-3689 A-F Y 97 94 100 61 79
>
> For name1, I want to add together columns 4, 5, 6, and get an average from that, then do the same for the last two columns. I want to do this for every name.
The following solution works for Python3 (due to the unpacking using the * syntax)
----
from collections import defaultdict, namedtuple
info = namedtuple('info', 'sum avg')
interesting_data = (x.strip(' \n') for idx, x in enumerate(open('file').readlines()) if idx > 1 and len(x.strip(' \n')) > 0)
split_points = [2, 4, 5]
results = defaultdict(list)
for line in interesting_data:
name, _, _, _, *rest = line.split()
last_point = 0
for point in split_points:
s = sum(map(int, rest[last_point:point]))
i = info(s, s / (point - last_point))
results[name].append(i)
last_point = point
print(results)
print(results['name3'][0].avg)
--Simon Kennedy
More information about the Python-list
mailing list