ValueError: too many values to unpack (Python 2.7)

最后都变了- 提交于 2019-12-13 09:55:57

问题


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:


Check the output of

print len(values)

It has more than 5 values (which is the number of variables you are trying to "unpack" it to) which is causing your "too many values to unpack" error:

username, passwordHash, startRoom, originUrl, bs64encode = values

If you want to ignore the tail end elements of your list, you can do the following:

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

or unpack only the first 5 elements (thanks to @JoelCornett)

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



回答2:


When you're doing values = data.split("\x00") it's producing more then 5 elements, probably not all values are separated by \x00.

Inspect the value of values with print values and check it's size with len(values)



来源:https://stackoverflow.com/questions/24212686/valueerror-too-many-values-to-unpack-python-2-7

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!