大家好,我是 星源,一个正在自学 Python 的 19 岁编程小白 🤓。今天我们继续学习 处理 CSV 文件和 JSON 数据!
📌 今日学习内容
👉 “今天我们把天气 API 彻底跑通,再做两道练习题!”
✨ 知识点讲解
项目:取得当前的天气数据(完整 4 步)
第 1 步:从命令行参数获取位置
1️⃣ 概念说明脚本通过 sys.argv 接收城市名,空格分隔。2️⃣ 代码示例
importsysiflen(sys.argv) <2:print('Usage: quickWeather.py location')sys.exit()location=' '.join(sys.argv[1:])3️⃣ 小提示sys.argv[0] 永远是脚本名,真正的参数从索引 1 开始。
第 2 步:下载 JSON 数据
1️⃣ 概念说明用 requests 模块 GET 指定 URL,把城市名插进去。2️⃣ 代码示例
importrequestsurl='http://api.openweathermap.org/data/2.5/forecast/daily?q=%s&cnt=3'%locationresponse=requests.get(url)response.raise_for_status() # 出错直接抛异常
3️⃣ 小提示URL 里的 %s 被 location 替换;cnt=3 表示返回 3 天预报。
第 3 步:加载 JSON 数据并打印天气
1️⃣ 概念说明json.loads() 把返回的大字符串变成 Python 字典,然后挖字段。2️⃣ 代码示例
importjsonweatherData=json.loads(response.text)w=weatherData['list']print('Current weather in %s:'%location)print(w[0]['weather'][0]['main'], '-', w[0]['weather'][0]['description'])print('Tomorrow:')print(w[1]['weather'][0]['main'], '-', w[1]['weather'][0]['description'])print('Day after tomorrow:')print(w[2]['weather'][0]['main'], '-', w[2]['weather'][0]['description'])3️⃣ 小提示
第 4 步:类似程序的想法
给的拓展思路:
比较多个露营地点的天气选最佳;
定时脚本检查霜冻并邮件/短信提醒;
多城市数据聚合求平均。
小结
CSV 和 JSON 是常见的纯文本格式,用于保存数据。它们很容易被程序解析,同时仍然让人可读,所以它们经常被用作简单的电子表格或网络应用程序的数据。csv 和 json 模块大大简化了读取和写入 CSV 和 JSON 文件的过程。前面几章教你如何利用 Python 从各种各样的文件格式的解析信息。一个常见的任务是接受多种格式的数据,解析它,并获得需要的特定信息。这些任务往往非常特别,商业软件并不是最有帮助的。通过编写自己的脚本,可以让计算机处理大量以这些格式呈现的数据。
习题
哪些功能是 Excel 电子表格有,而 CSV 电子表格没有?
向 csv.reader() 和 csv.writer() 传入什么,来创建 Reader 和 Writer 对象?
对于 Reader 和 Writer 对象,File 对象需要以什么模式打开?
什么方法接受一个列表参数,并将其写入 CSV 文件?
delimiter 和 lineterminator 关键字参数有什么用?
什么函数接受一个 JSON 数据的字符串,并返回一个 Python 数据结构?
什么函数接受一个 Python 数据结构,并返回一个 JSON 数据的字符串?
实践项目
“Excel 到 CSV 转换程序”:
读取当前目录所有 .xlsx 文件;
每个工作表生成一个 CSV,命名格式 <Excel文件名>_<工作表标题>.csv;
用 openpyxl 读单元格,用 csv.writer 写;
框架代码已在原文给出,可直接照抄再填空。
✅ 总结
天气 API 项目 = sys.argv + requests + json.loads() + 字典挖字段,一气呵成。
小结再次强调:CSV/JSON 是“人类可读 + 程序易处理”的桥梁。
习题 7 连问,全是面试高频!务必手写一遍答案。
实践项目 ≈ 综合大练兵,把 openpyxl 与 csv 打通,做完你就真正掌握了。
📢 互动提问
👉 你在用天气 API 时,最头疼的是“城市名拼错”还是“JSON 字段找不到”?留言聊聊踩坑史!