【问题标题】:ValueError: too many values to unpack (Python 2.7)ValueError:解包的值太多(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

【问题讨论】:

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

标签: python 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)检查它的大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多