首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跟踪器列表索引必须为字符串

跟踪器列表索引必须为字符串
EN

Stack Overflow用户
提问于 2014-01-13 11:45:32
回答 1查看 91关注 0票数 0

好的,我正在尝试获取跟踪器中的人员和时间戳,但我一直收到这个错误:

代码语言:javascript
复制
list indices must be integer, not str

下面是得到这个错误的代码:

代码语言:javascript
复制
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])))

错误发生在下面这一行:

代码语言:javascript
复制
data = json.loads(f.readall().decode('utf-8'))['viewer'][:10]

在url内部是带有相同标签"viewer“和"timestamp”的字典,例如:

代码语言:javascript
复制
http://chtracker.info/index.py?output=json&x=page&y=mechabot
EN

回答 1

Stack Overflow用户

发布于 2014-01-13 11:51:03

json.loads(...)会返回一个list,所以当你这样做的时候:

代码语言:javascript
复制
json.loads(...)['viewer']

您正在尝试使用无效的索引'viewer'访问list

您可以通过打印json.loads(f.readall().decode("utf-8"))来实现这一点,这样您就可以找到访问它的值的正确方式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21083539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档