将拆分字符串转换为元组会导致"解压缩的值太多"

jav*_*dba 0 python for-loop

在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循环版本的正确语法.

Ble*_*der 6

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)