类型错误:列表索引必须是整数,而不是 unicode(Telepot 检索名称)



我试图制作一个机器人来检索组中聊天发件人的姓名。我正在使用Python和Telepot。

>>> from pprint import pprint
>>> import telepot
>>> response = bot.getUpdates()
pprint(response)
[{u'message': {u'chat': {u'first_name': u'Nick',
                         u'id': 999999999,
                         u'last_name': u'Lee',
                         u'type': u'private'},
           u'date': 1444723969,
           u'from': {u'first_name': u'Nick',
                     u'id': 999999999,
                     u'last_name': u'Lee'},
           u'message_id': 4015,
           u'text': u'Hello'},
u'update_id': 100000000}]

当我执行这个时,它给了我这个错误

sender1 = response[u'message'][u'from'][u'first_name']
sender2 = response[u'message'][u'from'][u'last_name']

错误:

TypeError: list indices must be integers, not unicode

我该如何解决这个问题?

表示中的方括号表示您有一个列表,并且必须使用整数或切片对列表进行索引。在尝试访问任何包含的词典之前,请尝试按[0]编制索引。

使用 get() 而不是列表来访问字典中的值。 此方法返回字典中给定键的值(如果键不可用,则返回None值):

sender1 = response[0][u'message'][u'from'].get(u'first_name')
sender2 = response[0][u'message'][u'from'].get(u'last_name')
# output:
# >>> print sender1
# u'Nick'
# >>> print sender2
# u'Lee'

最新更新