too many values with string.split

2007-09-22 Thread Shawn Minisall
I'm trying to unpack a list of 5 floats from a list read from a file and 
python is telling me 5 variables are too many for the string.split 
statement.  Anyone have any other idea's?  NOTE: the only reason I 
convert it to a float instead of just leaving it as a string in the loop 
is because I have to have it printed out as a float besides the names 
and then the average displayed underneath

thx

#read in data line by line
for line in infile:
mylist = string.split(line)
firstName[counter] = mylist[0]
lastName[counter] = mylist[1]
grades[counter] = float(mylist[2])
print firstName[counter], 
lastName[counter],:,\t\t,grades[counter]
#increment counter
counter = counter + 1

#calculates and prints average score
grades = str(grades)
num1, num2, num3, num4, num5 = string.split(grades,,)
average = float(num1 + num2 + num3 + num4 + num5) / 5
print
print Average:
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: too many values with string.split

2007-09-22 Thread Marc 'BlackJack' Rintsch
On Sat, 22 Sep 2007 17:00:47 -0400, Shawn Minisall wrote:

 I'm trying to unpack a list of 5 floats from a list read from a file and 
 python is telling me 5 variables are too many for the string.split 
 statement.

Please post the *real* message which I suspect is something like 'too many
values to unpack', which is the other way around.  The 5 names are not
enough to take all the items from the split.

 #read in data line by line
 for line in infile:
 mylist = string.split(line)

Functions in the `string` module that are also available as methods on
strings are deprecated.

 firstName[counter] = mylist[0]
 lastName[counter] = mylist[1]
 grades[counter] = float(mylist[2])
 print firstName[counter], 
 lastName[counter],:,\t\t,grades[counter]
 #increment counter
 counter = counter + 1

Do you really need the counter?  Can't you just append the values to the
lists?

 #calculates and prints average score
 grades = str(grades)
 num1, num2, num3, num4, num5 = string.split(grades,,)
 average = float(num1 + num2 + num3 + num4 + num5) / 5

This is very strange.  You have a list of floats (I guess), convert that
list to a string, split that string at commas, concatenate the *strings*
between commas and then try to convert it to a `float`!?  This is likely
not what you want and should fail in most cases anyway.

Ciao,
Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: too many values with string.split

2007-09-22 Thread Alain
Shawn Minisall a écrit :
 I'm trying to unpack a list of 5 floats from a list read from a file and 
 python is telling me 5 variables are too many for the string.split 
 statement.  Anyone have any other idea's?  NOTE: the only reason I 
 convert it to a float instead of just leaving it as a string in the loop 
 is because I have to have it printed out as a float besides the names 
 and then the average displayed underneath
 
 thx
 
#read in data line by line
for line in infile:
mylist = string.split(line)
firstName[counter] = mylist[0]
lastName[counter] = mylist[1]
grades[counter] = float(mylist[2])
print firstName[counter], 
 lastName[counter],:,\t\t,grades[counter]
#increment counter
counter = counter + 1
 
#calculates and prints average score
grades = str(grades)
num1, num2, num3, num4, num5 = string.split(grades,,)
average = float(num1 + num2 + num3 + num4 + num5) / 5
print
print Average:

As I can see, grades is a string that looks like '[12.0,12.0, ...]'

So you can't split it just with string.split ()

Rather than doing grades = str(grades) and split it,
you have just to do :

avarage = sum (grades) / len (grades)
-- 
http://mail.python.org/mailman/listinfo/python-list