我试图制作一个机器人,它可以在一个组中检索聊天发送方的名称。我用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我该怎么解决这个问题?
发布于 2016-06-12 06:56:38
使用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'发布于 2016-06-12 06:48:51
表示中的方括号意味着您有一个列表,并且列表必须使用整数或切片进行索引。在尝试访问任何包含的字典之前,请尝试使用[0]进行索引。
https://stackoverflow.com/questions/37771482
复制相似问题