The sum of numbers in a line from a file
John Gordon
gordon at panix.com
Thu Feb 20 11:46:38 EST 2014
In <882091da-a499-477e-8f50-c5bdde7cdfec at googlegroups.com> kxjakkk <kjakupak at gmail.com> writes:
> 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.
> All I've got is
> sum([int(s.strip()) for s in open('file').readlines()])
This should get you started. However, this code does not work for all
your imput lines, as 'name3' is missing the third field. You'll have to
to modify the code to do something smarter than simple space-delimited
data. But as I said, it's a start.
# open the file
with open('file') as fp:
# process each line
for line in fp.readlines():
# split the line into a list of fields, delimited by spaces
fields = line.split()
# grab the name
name = fields[0]
# convert text values to integers and sum them
sum1 = int(fields[4]) + int(fields[5]) + int(fields[6])
sum2 = int(fields[7]) + int(fields[8])
# compute the averages
average1 = sum1 / 3.0
average2 = sum2 / 2.0
# display output
print '%s %f %f' % (name, average1, average2)
--
John Gordon Imagine what it must be like for a real medical doctor to
gordon at panix.com watch 'House', or a real serial killer to watch 'Dexter'.
More information about the Python-list
mailing list