在for循环中使用split会导致上述异常。但是,当从for循环中获取独立元素时,它可以工作:
>>> for k,v in x.split("="): ... print k,v ... Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: too many values to unpack >>> y = x.split("=") >>> y ['abc', 'asflskfjla'] >>> k,v = y >>> k 'abc' >>> v 'asflskfjla'
一个解释将不胜感激-并且自然也为for循环版本的正确语法。
该for环路期望的是,在迭代每个项目可以解压到两个变量。因此,在您的情况下,看起来像其中之一:
for
[('a, b'), ('c, d'), ...] [['a, b'], ['c, d'], ...] ['ab', 'cd', ...] ...
这些可迭代项中的每个项都可以分为k和v组件。在您的情况下,它们不能,因为的输出x.split('=')是具有两个以上字符的字符串列表:
k
v
x.split('=')
['abc', 'asflskfjla']