471,349 Members | 1,658 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

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

ValueError: too many values to unpack,>>>

I am trying to read a few lines of a file with multiple values, the rest
are single and are reading in fine.

With the multiple value lines, python says this "ValueError: too many
values to unpack"

I've googled it and it says that happens when you have too few or too
many strings that don't match with the variables in number your trying
to assign them too. Below are the lines in reading in:

line 3 - 19.18 29.15 78.75 212.10
line 4 - 100 20 410.29

And this is the code I'm using:

#read withdrawls from file on line3
line = infile.readline()

#split withdrawls up
withdraw1, withdraw2, withdraw3, withdraw4 = string.split(line, "\t")

#read deposits from file on line4
line = infile.readline()
#split deposits up
deposit1, deposit2, deposit3 = string.split(line, "\t")

I have 4 strings to match line 3 and 3 to match the 3 on line 4...any
thoughts?

thx

Sep 27 '07 #1
8 6938
On Thu, 27 Sep 2007 12:36:58 -0400, Shawn Minisall wrote:
With the multiple value lines, python says this "ValueError: too many
values to unpack"

I've googled it and it says that happens when you have too few or too
many strings that don't match with the variables in number your trying
to assign them too. Below are the lines in reading in:

line 3 - 19.18 29.15 78.75 212.10
line 4 - 100 20 410.29

And this is the code I'm using:

#read withdrawls from file on line3
line = infile.readline()

#split withdrawls up
withdraw1, withdraw2, withdraw3, withdraw4 = string.split(line, "\t")

#read deposits from file on line4
line = infile.readline()
#split deposits up
deposit1, deposit2, deposit3 = string.split(line, "\t")

I have 4 strings to match line 3 and 3 to match the 3 on line 4...any
thoughts?
First thought is to find out which of the two lines triggers the
exception. This information is part of the full traceback.

Ciao,
Marc 'BlackJack' Rintsch
Sep 27 '07 #2
Marc 'BlackJack' Rintsch wrote:
On Thu, 27 Sep 2007 12:36:58 -0400, Shawn Minisall wrote:

>With the multiple value lines, python says this "ValueError: too many
values to unpack"

I've googled it and it says that happens when you have too few or too
many strings that don't match with the variables in number your trying
to assign them too. Below are the lines in reading in:

line 3 - 19.18 29.15 78.75 212.10
line 4 - 100 20 410.29

And this is the code I'm using:

#read withdrawls from file on line3
line = infile.readline()

#split withdrawls up
withdraw1, withdraw2, withdraw3, withdraw4 = string.split(line, "\t")

#read deposits from file on line4
line = infile.readline()
#split deposits up
deposit1, deposit2, deposit3 = string.split(line, "\t")

I have 4 strings to match line 3 and 3 to match the 3 on line 4...any
thoughts?

First thought is to find out which of the two lines triggers the
exception. This information is part of the full traceback.

Ciao,
Marc 'BlackJack' Rintsch
Sorry, it looks like it's on the fourth line with the 3 values on line
4...its reading line 3 fine

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "I:\COMPUTER PROGRAMMING CLASS\PROJECT #1\project1.py", line 33,
in main
deposit1, deposit2, deposit3 = string.split(line, "\t")
ValueError: too many values to unpack

Sep 27 '07 #3
Shawn Minisall wrote:
Sorry, it looks like it's on the fourth line with the 3 values on line
4...its reading line 3 fine

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "I:\COMPUTER PROGRAMMING CLASS\PROJECT #1\project1.py", line 33,
in main
deposit1, deposit2, deposit3 = string.split(line, "\t")
ValueError: too many values to unpack
instead of fumbling around in the dark, try inserting a print statement
before the offending line, so you can see what you're trying to unpack:

print string.split(line, "\t") # see what it is
deposit1, deposit2, deposit3 = string.split(line, "\t")

</F>

Sep 27 '07 #4
Fredrik Lundh wrote:
Shawn Minisall wrote:

>Sorry, it looks like it's on the fourth line with the 3 values on line
4...its reading line 3 fine

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "I:\COMPUTER PROGRAMMING CLASS\PROJECT #1\project1.py", line 33,
in main
deposit1, deposit2, deposit3 = string.split(line, "\t")
ValueError: too many values to unpack

instead of fumbling around in the dark, try inserting a print statement
before the offending line, so you can see what you're trying to unpack:

print string.split(line, "\t") # see what it is
deposit1, deposit2, deposit3 = string.split(line, "\t")

</F>
I did and it printed everything up until the 3rd line with 3 numbers for
deposits. I have since figured it out...the teacher put in an extra tab
after the last value so python thought it was 4 values for three. I
went back into the file and deleted the extra tab after the 3rd number
and saved it...now it's working fine.

I'm going to kill her...

;)

Sep 27 '07 #5
Shawn Minisall a écrit :
Fredrik Lundh wrote:
>Shawn Minisall wrote:
>>Sorry, it looks like it's on the fourth line with the 3 values on
line 4...its reading line 3 fine

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "I:\COMPUTER PROGRAMMING CLASS\PROJECT #1\project1.py", line
33, in main
deposit1, deposit2, deposit3 = string.split(line, "\t")
ValueError: too many values to unpack


instead of fumbling around in the dark, try inserting a print
statement before the offending line, so you can see what you're trying
to unpack:

print string.split(line, "\t") # see what it is
deposit1, deposit2, deposit3 = string.split(line, "\t")

</F>

I did and it printed everything up until the 3rd line with 3 numbers for
deposits. I have since figured it out...the teacher put in an extra tab
after the last value so python thought it was 4 values for three. I
went back into the file and deleted the extra tab after the 3rd number
and saved it...now it's working fine.
I'm going to kill her...
You'd better learn how to deal with "this-cant-happen-here" situation,
because it's how it is in real-life.

Sep 27 '07 #6
Shawn Minisall wrote:
Fredrik Lundh wrote:
>Shawn Minisall wrote:

>>Sorry, it looks like it's on the fourth line with the 3 values on line
4...its reading line 3 fine

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "I:\COMPUTER PROGRAMMING CLASS\PROJECT #1\project1.py", line 33,
in main
deposit1, deposit2, deposit3 = string.split(line, "\t")
ValueError: too many values to unpack
instead of fumbling around in the dark, try inserting a print statement
before the offending line, so you can see what you're trying to unpack:

print string.split(line, "\t") # see what it is
deposit1, deposit2, deposit3 = string.split(line, "\t")

</F>
I did and it printed everything up until the 3rd line with 3 numbers for
deposits. I have since figured it out...the teacher put in an extra tab
after the last value so python thought it was 4 values for three. I
went back into the file and deleted the extra tab after the 3rd number
and saved it...now it's working fine.

I'm going to kill her...

;)
Alternatively you could use the additional argument to split() that
tells is the maximum number of splits to [erforms, then strip any
trailing whitespace off before using the values.

That way tou might get an extra mark for not amending the data file.
It's called "defensive programming", and you need t take it seriously
(as does everyone who programs).

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden

Sorry, the dog ate my .sigline

Sep 27 '07 #7
On Thu, Sep 27, 2007 at 09:50:26PM +0200, Bruno Desthuilliers wrote regarding Re: ValueError: too many values to unpack,>>>:
>
Shawn Minisall a ?crit :
Fredrik Lundh wrote:
Shawn Minisall wrote:

Sorry, it looks like it's on the fourth line with the 3 values on
line 4...its reading line 3 fine

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
main()
File "I:\COMPUTER PROGRAMMING CLASS\PROJECT #1\project1.py", line
33, in main
deposit1, deposit2, deposit3 = string.split(line, "\t")
ValueError: too many values to unpack

instead of fumbling around in the dark, try inserting a print
statement before the offending line, so you can see what you're trying
to unpack:

print string.split(line, "\t") # see what it is
deposit1, deposit2, deposit3 = string.split(line, "\t")

</F>
I did and it printed everything up until the 3rd line with 3 numbers for
deposits. I have since figured it out...the teacher put in an extra tab
after the last value so python thought it was 4 values for three. I
went back into the file and deleted the extra tab after the 3rd number
and saved it...now it's working fine.
I'm going to kill her...

You'd better learn how to deal with "this-cant-happen-here" situation,
because it's how it is in real-life.
And preferably learn how to deal with it in your code, not in the data that's given to you. I wouldn't be surprised if your teacher gave you that on purpose. There's an old maxim which I think applies here: "Be liberal in what you accept and conservative in what you produce."

Note that you have *not* come up with code that handles the dataset given to you by your professor. Do not expect full marks on this homework assignment, unless you go back and modify your code to handle extraneous tabs at the end of the line.

Cheers,
Cliff

Sep 27 '07 #8
J. Clifford Dyer a écrit :
On Thu, Sep 27, 2007 at 09:50:26PM +0200, Bruno Desthuilliers wrote
regarding Re: ValueError: too many values to unpack,>>>:
>Shawn Minisall a ?crit :
(snip)
>>I did and it printed everything up until the 3rd line with 3
numbers for deposits. I have since figured it out...the teacher
put in an extra tab after the last value so python thought it was
4 values for three. I went back into the file and deleted the
extra tab after the 3rd number and saved it...now it's working
fine. I'm going to kill her...
>You'd better learn how to deal with "this-cant-happen-here"
situation, because it's how it is in real-life.

And preferably learn how to deal with it in your code, not in the
data that's given to you.
Thanks for clarifying this point, which is of course what I meant.

Sep 28 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Mike Spindler | last post: by
12 posts views Thread by yawnmoth | last post: by
6 posts views Thread by jawilson2 | last post: by
3 posts views Thread by Daniel Nogradi | 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.