【问题标题】:Unable to print wanted item from json api无法从 json api 打印想要的项目
【发布时间】:2016-09-17 22:25:31
【问题描述】:

我正在尝试从 json urlfile 打印“临时”项目。问题是,我不能只输入print(item['temp'] 如果我这样做了,我会收到此错误:

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

所以我想我必须改用整数,这就是我所做的。但是当它 打印出我得到的结果:

"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])

【问题讨论】:

  • 那是因为item 是一个字符串,而不是一个字典。它们是字典中的
  • @MartijnPieters 如何称呼这样一个列表中的项目?

标签: python json api python-3.x urllib


【解决方案1】:

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

我认为您想打印curren_weather 引用的列表中字典列表的'temp' 键:

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

我也添加了temp_unit 值;以上输出:

15c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多