471,328 Members | 1,882 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,328 software developers and data experts.

too many values with string.split

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:"
Sep 22 '07 #1
2 3610
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
Sep 22 '07 #2
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)
Sep 22 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

7 posts views Thread by Jim Adamson | last post: by
19 posts views Thread by nazgulero | last post: by
3 posts views Thread by Elezar Simeon Papo | last post: by
8 posts views Thread by Chris A via AccessMonster.com | last post: by
3 posts views Thread by Eric_Dexter | last post: by
8 posts views Thread by Shawn Minisall | last post: by
3 posts views Thread by Shawn Minisall | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.