好的,我正在尝试获取跟踪器中的人员和时间戳,但我一直收到这个错误:
list indices must be integer, not str下面是得到这个错误的代码:
elif used_prefix and cmd == "tracker" and self.getAccess(user) >= 1:
try:
if len(args) == 0:
name = user.name.lower()
elif len(args) > 0:
name = args.lower()
f = urlreq.urlopen("http://chtracker.info/index.py?output=json&x=page&y={}".format(name))
data = json.loads(f.readall().decode("utf-8"))['viewer'][:10]
t = "{}, the last 10 people who visited {}'s profile are: ".format(name.title(), name.title())
viewers = [(item['viewer'], item['timestamp']) for item in data]
for l in viewers:
viewer, timest = l
t += "{} about {} ago".format(viewer, stamp.getTimeStamp((timest)))
room.message(t, True)
except:
print(traceback.format_exc())
room.message((str(sys.exc_info()[1])))错误发生在下面这一行:
data = json.loads(f.readall().decode('utf-8'))['viewer'][:10]在url内部是带有相同标签"viewer“和"timestamp”的字典,例如:
http://chtracker.info/index.py?output=json&x=page&y=mechabot发布于 2014-01-13 11:51:03
json.loads(...)会返回一个list,所以当你这样做的时候:
json.loads(...)['viewer']您正在尝试使用无效的索引'viewer'访问list。
您可以通过打印json.loads(f.readall().decode("utf-8"))来实现这一点,这样您就可以找到访问它的值的正确方式。
https://stackoverflow.com/questions/21083539
复制相似问题