python小程序基于Jupyter实现天气查询的方法
作者:w²大大 发布时间:2021-05-30 10:39:40
标签:python,Jupyter,天气查询
天气查询python小程序第0步:导入工具库第一步:生成查询天气的url链接第二步:访问url链接,解析服务器返回的json数据,变成python的字典数据第三步:对字典进行索引,获取气温、风速、风向等天气信息第四步:遍历forecast列表中的五个元素,打印天气信息完整Python代码
本案例是一个非常有趣的python小程序,调用网络API查询指定城市的天气,并打印输出天气信息。
你将学到以下技能:
向网络API发起请求,解析和处理服务器返回的json数据,可以迁移到各种各样的API中,如PM2.5查询,道路拥堵查询,自然灾害查询等。
python字典数据类型的常用操作
以下的代码运行在jupyter notebook的开发环境中,这是python数据分析、机器学习、人工智能开发最常用的开发界面,因为可以非常方便的撰写博客、插入图片和数学公式,并输出代码运行的中间结果,强烈建议你学习如何使用jupyter notebook。
第0步:导入工具库
import urllib.request
import gzip
第一步:生成查询天气的url链接
city_name = '上海'
# 将城市的中文名字编码成utf-8字符
urllib.parse.quote(city_name)
# 将编码后的城市名拼接在原始链接的后面
url = 'http://wthrcdn.etouch.cn/weather_mini?city=' + urllib.parse.quote(city_name)
第二步:访问url链接,解析服务器返回的json数据,变成python的字典数据
weather_data = urllib.request.urlopen(url).read()
# 访问url链接,获取字节串数据
weather_data
# 将字节串解码为unicode编码
weather_data = gzip.decompress(weather_data)
weather_data
# 将unicode编码解码为utf-8编码,显示中文
weather_data = weather_data.decode('utf-8')
weather_data
# 将字符串两端的引号去掉,变成python中的字典数据
weather_dict = eval(weather_data)
weather_dict
type(weather_dict)
第三步:对字典进行索引,获取气温、风速、风向等天气信息
weather_dict
weather_dict['data']['yesterday']['high']
print('您查询的城市:',weather_dict['data']['city'])
print('--------------------------')
print('今天的天气')
print('温度',weather_dict['data']['wendu'])
print('感冒指数',weather_dict['data']['ganmao'])
print('--------------------------')
print('昨天的天气')
print('昨天:',weather_dict['data']['yesterday']['date'])
print('天气:',weather_dict['data']['yesterday']['type'])
print('最高气温:',weather_dict['data']['yesterday']['high'])
print('最低气温:',weather_dict['data']['yesterday']['low'])
print('风向:',weather_dict['data']['yesterday']['fx'])
print('风力:',weather_dict['data']['yesterday']['fl'][-5:-3])
print('--------------------------')
第四步:遍历forecast列表中的五个元素,打印天气信息
weather_dict[‘data'][‘forecast']是一个包含五个元素的列表,每一个元素都是一个字典。
weather_dict['data']['forecast']
for each in weather_dict['data']['forecast']:
print('日期',each['date'])
print('天气',each['type'])
print(each['high'])
print(each['low'])
print('风向',each['fengxiang'])
print('风力:',each['fengli'][-5:-3])
print('--------------------------')
完整Python代码
# 导入工具库
import urllib.request
import gzip
## 第一步:生成查询天气的url链接
city_name = input('请输入要查询的城市名称:')
# 将城市的中文名字编码成utf-8字符
urllib.parse.quote(city_name)
# 生成完整url链接
url = 'http://wthrcdn.etouch.cn/weather_mini?city='+urllib.parse.quote(city_name)
## 第二步:访问url链接,解析服务器返回的json数据,变成python的字典数据
# 获取服务器返回的json字节串数据
weather_data = urllib.request.urlopen(url).read()
# 将字节串数据解码为unicode中的utf-8数据
weather_data = gzip.decompress(weather_data).decode('utf-8')
# 将json数据转为python的字典数据
weather_dict = eval(weather_data)
if weather_dict.get('desc') == 'invilad-citykey':
print('您输入的城市未收录')
# 第三步:对字典进行索引,获取气温、风速、风向等天气信息
print('您查询的城市:',weather_dict['data']['city'])
print('--------------------------')
print('今天的天气')
print('温度',weather_dict['data']['wendu'])
print('感冒指数',weather_dict['data']['ganmao'])
print('--------------------------')
print('昨天的天气')
print('昨天:',weather_dict['data']['yesterday']['date'])
print('天气:',weather_dict['data']['yesterday']['type'])
print('最高气温:',weather_dict['data']['yesterday']['high'])
print('最低气温:',weather_dict['data']['yesterday']['low'])
print('风向:',weather_dict['data']['yesterday']['fx'])
print('风力:',weather_dict['data']['yesterday']['fl'][-5:-3])
print('--------------------------')
# 第四步:遍历forecast列表中的五个元素,打印天气信息
for each in weather_dict['data']['forecast']:
print('日期',each['date'])
print('天气',each['type'])
print(each['high'])
print(each['low'])
print('风向',each['fengxiang'])
print('风力:',each['fengli'][-5:-3])
print('--------------------------')
来源:https://blog.csdn.net/qq_42585108/article/details/105113248


猜你喜欢
- 一、图像处理1. 灰度图像灰度图像矩阵元素的取值范围通常为 [0,255] 。因此其数据类型一般为8位无符号整数的(in
- 环境: Python 3.6.4 + Pycharm Professional 2017.3.3 + PyQt5 + PyQt5-tools
- 到现在为止,你只学习了如何根据特定的条件从表中取出一条或多条记录。但是,假如你想对一个表中的记录进行数据统计。例如,如果你想统计存储在表中的
- 自定义可迭代的类列表可以获取列表的长度,然后使用变量i对列表索引进行循环,也可以获取集合的所有元素,且容易理解。没错,使用列表的代码是容易理
- 最近 全栈数据工程师养成攻略 的微信群已经将近500人,开了二群之后为了打通不同微信群之间的消息,花了点时间做了个消息同步机器人,在任意群收
- run() 方法并不启动一个新线程,就是在主线程中调用了一个普通函数而已。start() 方法是启动一个子线程,线程名就是自己定义的name
- 之前写过一篇 MySQL通过自定义函数的方式,递归查询树结构,从MySQL 8.0 开始终于支持了递归查询的语法CTE首先了解一下什么是 C
- 关于多线程的大概讲解:在Python的标准库中给出了2个模块:_thread和threading,_thread是低级模块不支持守护线程,当
- 1.先用 for 循环取for item in l: if isinstance(item ,list): &nb
- 跨浏览器的本地存储(一):userData behaviorDOM Storage,是基于 Web Applications 1.0 spe
- Elasticsearch简介Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene&
- 1. 连接数据库要连接到数据库首先要导入驱动程序。例如import _ "github.com/go-sql-driver/mys
- 1.环境mysql 8.0Django 3.2pycharm 2021.112. (No changes detected)及解决2.1 问
- 在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码。代码段1:d
- 前言我们在日常文本处理中,经常会将数据结构保存在列表中,如果将列表中的项进行关联,创建我们想要的字典结构,存取就会十分方便!示例详解比如说将
- 在官方网站中对as_index有以下介绍:as_index : boolean, default TrueFor aggregated ou
- 导语之前有很多小伙伴说想学习一下多线程图片下载器,虽然好像已经过去很久了,不过还是上来安排一波吧。至于题目为什么说是构建一个小型数据集,因为
- 引言Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型结构体是由一系列具有相同类型或不同类型的数据构成的
- 例一:使用httplib访问某个url然后获取返回的内容:import httplibconn=httplib.HTTPConne
- 引言今天我们来分享一个 Python 领域的神级第三方库 -- pycallgraph,通过该库并结合 graphviz 工具,就可以非常方