ValueError:解包的值太多(Python 2.7)

Posted

技术标签:

【中文标题】ValueError:解包的值太多(Python 2.7)【英文标题】:ValueError: too many values to unpack (Python 2.7) 【发布时间】:2014-06-13 19:34:27 【问题描述】:
values = data.split("\x00")

username, passwordHash, startRoom, originUrl, bs64encode = values
if len(passwordHash)!= 0 and len(passwordHash)!= 64:
        passwordHash = ""
if passwordHash != "":
        passwordHash = hashlib.sha512(passwordHash).hexdigest()
username = username.replace("<", "")
if len(startRoom) > 200:
        startRoom = ""
startRoom = self.roomNameStrip(startRoom, "2").replace("<","").replace("&amp;#", "&amp;amp;#")
self.login(username, passwordHash, startRoom, originUrl)  


Error:
username, passwordHash, startRoom, originUrl, bs64encode = values
ValueError: too many values to unpack

【问题讨论】:

我建议添加一些文本来说明问题,而不仅仅是发布代码。您的问题可能会得到更多支持,因此会有更多人看到它,您也更有可能得到答案。 【参考方案1】:

检查输出

print len(values)

它有超过 5 个值(这是您尝试将其“解包”到的变量数),这会导致您的“解包值过多”错误:

username, passwordHash, startRoom, originUrl, bs64encode = values

如果您想忽略列表的尾部元素,可以执行以下操作:

#assuming values has a length of 6
username, passwordHash, startRoom, originUrl, bs64encode, _ = values

或者只解压前 5 个元素(感谢 @JoelCornett)

#get the first 5 elements from the list
username, passwordHash, startRoom, originUrl, bs64encode = values[:5]

【讨论】:

最好arg1, arg2, arg3 = values[:3] 忽略多余的元素。 这也是另一种选择 - 添加到答案 - 谢谢【参考方案2】:

当您执行 values = data.split("\x00") 时,它会生成超过 5 个元素,可能并非所有值都由 \x00 分隔。

print values检查values的值,用len(values)检查它的大小

【讨论】:

以上是关于ValueError:解包的值太多(Python 2.7)的主要内容,如果未能解决你的问题,请参考以下文章

Python ValueError:解包的值太多,解决方案?

python ValueError:在元组中解包的值太多

ValueError:使用 Sage 绘图时“解包的值太多”

Pandas DataFrame apply() ValueError:要解包的值太多(预期为 2)

Makemigrations ValueError:解包的值太多

Tensorboard - ValueError:解包的值太多(预期 2)