首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python格式数据管理

Python格式数据管理
EN

Stack Overflow用户
提问于 2012-11-02 17:13:25
回答 3查看 263关注 0票数 1

我正在尝试从JSON数据中提取所需的数据,从开放天气地图中提取 (2.7)中的 API!JSON文件看起来像这样。

代码语言:javascript
复制
{u'calctime': 0.0331,
 u'cnt': 2,
 u'cod': u'200',
 u'list': [{u'clouds': {u'all': 75},
            u'coord': {u'lat': 45.551109, u'lon': 18.69389},
            u'distance': 0.001,
            u'dt': 1351870200,
            u'id': 3193935,
            u'main': {u'humidity': 93,
                      u'pressure': 1008,
                      u'temp': 287.15,
                      u'temp_max': 291.18,
                      u'temp_min': 287.15},
            u'name': u'Osijek',
            u'weather': [{u'description': u'broken clouds',
                          u'icon': u'04d',
                          u'id': 803,
                          u'main': u'Clouds'}],
            u'wind': {u'deg': 70, u'speed': 4.6}},
           {u'clouds': {u'all': 75},
            u'coord': {u'lat': 45.568611, u'lon': 18.61389},
            u'distance': 6.526,
            u'dt': 1351870200,
            u'id': 3187657,
            u'main': {u'humidity': 93,
                      u'pressure': 1008,
                      u'temp': 285.43,
                      u'temp_max': 287.15,
                      u'temp_min': 282.15},
            u'name': u'Visnjevac',
            u'weather': [{u'description': u'light intensity shower rain',
                          u'icon': u'09d',
                          u'id': 520,
                          u'main': u'Rain'}],
            u'wind': {u'deg': 70, u'speed': 4.6}}],
 u'message': u'Model=GFS-OWM, '}

这是两个地理点的天气数据。我知道如何使用json软件包从两个点(例如湿度或温度)中提取单个数据,但问题是无法从不同的地理点提取出同一类型的多个数据。在本例中,我希望提取/打印这些点的名称(osijek,visnjevac)。

有什么方法可以用json编码器/decder实现吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-02 17:18:26

您所拥有的不是JSON,它是Python,所以我假设您已经通过json.loads()或类似的东西传递了原始的JSON字符串。

要提取城市列表中每个字典的'name'值,可以使用以下方法:

代码语言:javascript
复制
names = [city['name'] for city in data['list']]

结果:

代码语言:javascript
复制
>>> names
[u'Osijek', u'Visnjevac']

假设您在变量data中有来自post的内容。

票数 3
EN

Stack Overflow用户

发布于 2012-11-02 17:28:23

我想在F.J的回答中补充一点,如果你想动态地提取特定城市的数据,你可以这样做:

代码语言:javascript
复制
cities = ['osijek', 'visnjevac']
cities_data = filter(lambda i: i['name'].lower() in cities, data['list'])
票数 1
EN

Stack Overflow用户

发布于 2013-12-13 10:31:00

您可能会发现我的GitHub Python项目PyOWM很有用,它是一个简单的面向对象的客户端包装器,围绕着开放天气地图web。

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

https://stackoverflow.com/questions/13200038

复制
相关文章

相似问题

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