ValueError:解压缩的值太多(预期2)

时间:2013-08-29 14:18:49

标签: python

line="101 : johnny 'wave-boy' jones:usa:8.32:fish:21"
s={}
(identity,name,country,average,boardtype,age)=line.split()
print(identity)

我的输出是:

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    (identity,name,country,average,boardtype,age)=line.split()
ValueError: need more than 5 values to unpack

5 个答案:

答案 0 :(得分:3)

您正在以空白字符分割该行。我想你想把它分成冒号,你可以用

来实现
identity, name, country, average, boardtype, age = line.split(':')

答案 1 :(得分:2)

line.split()返回['101', ':', 'johnny', "'wave-boy'", 'jones:usa:8.32:fish:21']

它的长度为5,而你将它打包到一个有6个元素的元组。

在不传递参数的情况下拆分字符串时,该方法的行为为string.split(' ')

我认为您可以使用line.split(':')

来达到您想要达到的目标

答案 2 :(得分:1)

分割line时,会得到5个值的列表,并且您尝试将其分配给6个值

>>> line="101 : johnny 'wave-boy' jones:usa:8.32:fish:21"
>>> line.split()
['101', ':', 'johnny', "'wave-boy'", 'jones:usa:8.32:fish:21']
>>> (a,b,c,d,e) = line.split()
>>> (a,b,c,d,e,f) = line.split()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 5 values to unpack

答案 3 :(得分:0)

以下是您split()字符串时发生的事情:

>>> line="101 : johny 'wave-boy' jones:usa:8.32:fish:21"
>>> line.split()
['101', ':', 'johny', "'wave-boy'", 'jones:usa:8.32:fish:21']
>>> len(line.split())
5

但你要求的是6元组。

答案 4 :(得分:0)

看起来您想使用冒号(':')作为split的分隔符。当你在没有任何参数的情况下调用split时,默认为空格作为分隔符。