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;#")
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:解包的值太多,解决方案?
ValueError:使用 Sage 绘图时“解包的值太多”
Pandas DataFrame apply() ValueError:要解包的值太多(预期为 2)