TypeError:字符串索引必须是JSON的整数

时间:2016-04-21 14:34:49

标签: python json

我正在用Python编写程序来提示输入URL,使用urllib从该URL读取JSON数据,然后从JSON数据中解析并提取注释计数,计算文件中数字的总和并输入总和如下。这是我的代码:

import urllib
import json

total = 0
url = open("comments_42.json")
print 'Retrieving', url
#uh = urllib.urlopen(url)
data = url.read()
print 'Retrieved',len(data),'characters'
#print data

info = json.loads(data)
print info
print 'User count:', len(info)


for item in info:
    print item['count']
    total = total + item['count']

print total

我收到的错误是:

TypeError: string indices must be integers" for "print item['count']

为什么他们必须是整数?我在Coursera的讲师做了类似的事情。有什么建议吗?

JSON文件具有以下结构:

{
  comments: [
    {
      name: "Matthias"
      count: 97
    },
    {
      name: "Geomer"
      count: 97
    }
    ...
  ]
}

2 个答案:

答案 0 :(得分:0)

错误"TypeError: string indices must be integers" for "print item['count']"表示item是一个字符串;在这种情况下,它是一本字典键。

我还没有看到你的JSON但是如果你的" comments_42.json"是this dataset,请尝试以下代码:

total = 0
for item in info["comments"]:
    print item['count']
    total += item["count"]

我发现它here(也许有人解决了这个挑战或其他任何问题并上传了解决方案)

答案 1 :(得分:0)

它告诉您该项目是一个字符串,这意味着您的JSON结构与您在课程中使用的结构不同。例如

info = ['the', 'items', 'inside', 'this', 'list', 'are', 'strings']

for item in info:
    # Items here are strings (the, information, etc)
    print(items) # this will print each word in the list




info = {'sentence': 'the', 'items', 'inside', 'this', 'list', 'are', 'strings'}

for items in info:
    # This is a dictionary, which can be addressed by the key name
    print(items['sentence'])  # this is what you're expecting, because 'sentence' is a dictionary key.

如果您将JSON回复添加到原始问题,我们可以帮助您了解如何访问所需的项目。