2016-09-17 63 views
-1

我试图从json urlfile打印'temp'项目。问题是,我不能只需键入print(item['temp'] 如果我这样做,我得到这个错误:无法打印来自json api的想要的项目

TypeError: string indices must be integers

所以我想我不得不使用一个整数,而不是,这是我做的。但是,当它 打印出结果,我得到这个:

“F C”

这没有任何意义,无所谓我输入的内容数量,我得到的形式结果2个字母。

下面的代码:

import urllib.request 
import json 

url = urllib.request.urlopen("http://www.myweather2.com/developer/forecast.ashx?uac=fRnJKj3Xpi&output=json&query=SW1") 
readurl = url.read() 
json_obj = str(readurl, "utf-8") 
data = json.loads(json_obj) 

for item in data['weather']: 
    print(item[0]) 
+0

这是因为'item'是一个字符串,而不是字典。他们是字典中的*键*。 –

+0

@MartijnPieters如何在这样的列表中调用一个项目? – Vitalynx

回答

0

data['weather']字典,并直接通过一个字典循环在该字典产生的键。这里每个键都是一个字符串。或者'curren_weather''forecast'。因此,item[0]需要每个键的第一个字母,所以你最终打印fc

>>> for item in data['weather']: 
...  print(item) 
... 
curren_weather 
forecast 
>>> for item in data['weather']: 
...  print(item[0]) 
... 
c 
f 

我想你要打印字典中被引用的名单列表的'temp'关键curren_weather代替:

for curr in data['weather']['curren_weather']: 
    print(curr['temp'] + curr['temp_unit']) 

我添加​​值太;以上输出:

15c