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

5 回答 5

4

您在空白字符处拆分行。我想你想把它分成冒号,你可以通过

identity, name, country, average, boardtype, age = line.split(':')
于 2013-08-29T14:22:07.857 回答
3

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

它的长度为 5,而您将它解压缩为一个包含 6 个元素的元组。

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

我认为你想要达到的目标可以达到line.split(':')

于 2013-08-29T14:21:34.433 回答
2

当你 split 时line,你会得到一个包含 5 个值的列表,并且你试图将它分配给 6 个值

IE,

>>> 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
于 2013-08-29T14:21:05.657 回答
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 元组。

于 2013-08-29T14:23:16.770 回答
0

看起来您想使用冒号 ( ':') 作为split. 当您split不带任何参数调用时,它默认使用空格作为分隔符。

于 2013-08-29T14:23:33.183 回答