我正在用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
}
...
]
}
答案 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回复添加到原始问题,我们可以帮助您了解如何访问所需的项目。