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

実行すると、l: Oh L should = ['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 に答える