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