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:
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)