在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'
Run Code Online (Sandbox Code Playgroud)
可以理解 - 并且自然也是for循环版本的正确语法.
该for环路期望的是,在迭代每个项目可以解压到两个变量.所以在你的情况下,它看起来像这样的一个:
[('a, b'), ('c, d'), ...]
[['a, b'], ['c, d'], ...]
['ab', 'cd', ...]
...
Run Code Online (Sandbox Code Playgroud)
每个迭代中的每个项目都可以分成一个k和一个v组件.在你的情况下,它们不能,因为输出x.split('=')是一个包含两个以上字符的字符串列表:
['abc', 'asflskfjla']
Run Code Online (Sandbox Code Playgroud)