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

2024-09-27 17:47:18 发布

您现在位置: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循环版本。在


Tags: in元素mostforstdinlinecallfile
3条回答

for循环期望iterable中的每个项都可以解压为两个变量。所以在你的情况下,它看起来像是:

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

每个iterable中的每个项目都可以拆分为kv组件。在您的情况下,它们不能,因为x.split('=')的输出是包含两个以上字符的字符串列表:

^{pr2}$

如果希望此行为,只需将s.split()包装在列表中:

>>> for (k,v) in [s.split("=")]:
    print(k,v)  
('abc', 'asflskfjla')

x.split返回字符串列表,如您从y变量中看到的那样。当您迭代该元素时,它获取列表'abc'的第一个元素,并尝试将其绑定到元组k, v。事实上,要把一个字符串中的三个字符(一个字符串)分解成三个字符,这就要求你把它分解成两个字符串。在

相关问题 更多 >

    热门问题