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

我的輸出是:ValueError異常:值過多解壓(預期2)

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 
+4

'(預計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 
2

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

它具有5的長度,而您將它解包爲具有6個元素的元組。

當你沒有傳遞參數拆分的字符串,該方法的行爲string.split(' ')

我想你想達到可與line.split(':')

3

你在分裂空格字符行達成什麼。我想你想它在冒號,你可以通過

identity, name, country, average, boardtype, age = line.split(':') 
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元組。

0

它看起來像你想使用冒號(':')作爲split的分隔符。當您在沒有任何參數的情況下調用split時,它默認爲空格作爲分隔符。

相關問題