一尘不染

将拆分后的字符串转换为元组会导致“太多值无法解包”

python

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


阅读 166

收藏
2021-01-20

共1个答案

一尘不染

for环路期望的是,在迭代每个项目可以解压到两个变量。因此,在您的情况下,看起来像其中之一:

[('a, b'), ('c, d'), ...]
[['a, b'], ['c, d'], ...]
['ab', 'cd', ...]
...

这些可迭代项中的每个项都可以分为kv组件。在您的情况下,它们不能,因为的输出x.split('=')是具有两个以上字符的字符串列表:

['abc', 'asflskfjla']
2021-01-20