-2

我正在尝试使用以下代码(http://bpaste.net/show/146050):

if used_prefix and cmd == "rn" and self.getAccess(user) >=1:
    try:
      if notes.check(user.name) == True:
        for l in notes.one(user.name):
           for sender, message, rawtime in l:
              room.message("Note from %s: %s [%s] " % sender, message, self.LongTimeStampFull(rawtime))
      else:
        room.message("Your inbox is empty.")
    except:
      room.message((str(sys.exc_info()[1])))

当我运行它时,它会给出一个错误,说它需要超过 1 个值来为 l 中的发件人、消息、原始时间解包:哦 L 应该 = ['sender', 'message', rawtime]

我该如何解决?

4

1 回答 1

1

您的列表仅包含 3 项,因此此处不需要循环。做就是了:

>>> lis = ['sender', 'message', 'rawtime']
>>> sender, message, rawtime = lis
>>> sender
'sender'
>>> message
'message'
>>> rawtime
'rawtime'

如果要使用 for 循环,请使用列表列表或元组列表:

>>> lis = [('sender', 'message', 'rawtime')]
>>> for x, y, z in lis:
...     print x, y, z
...     
sender message rawtime

更新:您的代码的固定版本:

for sender, message, rawtime in notes.one(user.name):
        room.message("Note from %s: %s [%s] " % sender, message, self.LongTimeStampFull(rawtime))
于 2013-11-03T20:19:32.377 回答