Note.py期望值太多

时间:2013-12-27 16:50:01

标签: python

这是我的note.py模块中的readall命令:

 if used_prefix and cmd == "readall" and self.getAccess(user) >= 1:
  try:
    if notes.check(user.name) == True:
      t = user.name.title()+" these are all your notes:<br><br>"
      for l in notes.getall(user.name):
        print(l)
        for sender, message, notetime in l:
          t += "From %s: %s (%s)" % (sender.title(), msg, stamp.LongTimeStampFull(notetime))
      room.message(t, True)
    else:
      room.message("Your inbox is empty! ;D")
  except:
    room.message((str(sys.exc_info()[1])))

notes.getall(user.name)相当于notes.database[user.name][:]

数据库使用列表中的列表。

每次我使用命令时,我都会在note.py上收到此错误。

too many values to unpack (expected 3)

在线:

for sender, msg, notetime in l:

同时打印l:

['charles', 'testing this', 1260046789] ['charles', 'this is a test', 1230056545]

1 个答案:

答案 0 :(得分:0)

根据您显示print(l)打印内容的编辑,您的问题似乎是您希望l拥有多个“行”(即列出的列表) ),但它没有(它是一个字符串列表)。你可以解决这个问题,但这里有一个:

for l in notes.getall(user.name):
    sender, message, notetime = l
    t += "From %s: %s (%s)" % (sender.title(), msg, stamp.LongTimeStampFull(notetime))

举个例子:

>>> a = ['test','test2','test3']
>>> b,c,d = a
>>> b
'test'
>>> c
'test2'
>>> d
'test3'

或者,您可以将字符串列表转换为列表列表:

>>> for b,c,d in [a]:
...  print(b,c,d)
...
test test2 test3