Christopher Spears wrote: > I created a file called table.txt. Here is the file's > contents: > > 1 5 10 2 1.0 > 2 10 20 4 2.0 3 > 3 15 30 8 3 2 1 > 4 20 40 16 4.0 > > I modified a script I found in "Programming Python" > and created script called summer_v03.py that added the > columns together succesfully and outputted the results > in a list: > > [EMAIL PROTECTED] ./text_proc 158> ./summer_v03.py > table.txt > [10.0, 50.0, 100.0, 30.0, 10.0, 5.0, 1.0] > > Here is the code:
It is very wordy. There is no need to read and split the file twice. I would just make a list of the (split) lines in the file and keep it around. The loops in find_longest_line can easily be replaced with list comprehensions. Some of your names are a little off. lines_in_file is actually a single line; cols_in_file is the cols of a single line. Reading the file into a list of split columns and finding the length of the longest line is as simple as data = [ line.split() for line in open(fileName) ] numCols = max(len(cols) for cols in data) Then your summing loop pretty much stands, though you might want to use enumerate() instead of range(len(cols)): sums = [0] * numCols for cols in data: for i, col in enumerate(cols): sums[i] += col Kent > > #!/usr/bin/python > import string > > def find_longest_line(fileName): > longest_col = [] > for lines_in_file in open(fileName, 'r').readlines(): > cols_in_file = string.split(lines_in_file) > #print cols_in_file > numCols = len(cols_in_file) > if numCols > len(longest_col): > longest_col = cols_in_file > return len(longest_col) > > > def summer(fileName): > length_longest_col = find_longest_line(fileName) > sums = [0] * length_longest_col > for lines_in_file in open(fileName, 'r').readlines(): > cols = string.split(lines_in_file) > for i in range(len(cols)): > sums[i] = sums[i] + float(cols[i]) > return sums > > if __name__ == '__main__': > import sys > print summer(sys.argv[1]) > > What do you think? > > > "I'm the last person to pretend that I'm a radio. I'd rather go out and be a > color television set." > -David Bowie > > "Who dares wins" > -British military motto > > "I generally know what I'm doing." > -Buster Keaton > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor