Python的听课笔记案例8--空气污染指数计算2.0

原创
小哥 3年前 (2022-10-29) 阅读数 8 #大杂烩

本课程的这一部分重点介绍:

1,请阅读所获得的JSON数据文件

2、并将AQI排在前五位的数据输出。JSON文件

什么是JSON文件?
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,是可以以文本格式打开的文本数据。
复杂的数据可以表示和存储,易于阅读和理解。

JSON文件规则:
1,数据以键值对的形式保存;
2,键-值对之间用逗号分隔;
3,花括号用于保存由对象组成的数据的键-值对;
4方括号用于保存数据的键-值对数组;list列表)
以对象和数组形式组织的键-值对可以表示任何结构的数据。
JSON格式是互联网上使用的主要复杂数据格式之一。

下图是一个JSON文件:

JSON库是处理JSON格式的Python标准库
两个进程:
1、编码(encoding),将Python转换数据类型JSON格式化的过程
2、解码(decoding),从JSON格式中的解析数据对应于Python数据类型的处理

函数

含义

dumps()

将Python转换数据类型JSON格式

loads()

将JSON格式字符串被转换。Python数据类型

dump()

与dumps()函数一致并输出到文件

load()

与loads()函数功能一致,从文件中输入。

以下是如何使用Python如何从JSON文件获取数据,如何输出数据JSON文件中:

"""
    作者:lanxingbudui
    日期:2020-02-22
    功能:AQI计算
    功能2:如何进入JSON文件数据,如何输出JSON文件数据。
    版本:1.0
"""

import json

def process_json_file(filepath):
    """
        解码json文件
    """
    """
    处理单据的三个步骤:1,打开文件;2,处理文件;;3,关闭文件
    """
    f = open(filepath, mode=r, encoding=utf-8)
    city_list = json.load(f)
    return city_list

def main():
    """
        主函数
    """
    filepath = input(请输入json文件名:)
    city_list = process_json_file(filepath)
    # 使用lambda函数 排序
    city_list.sort(key=lambda city: city[aqi])
    top5_list = city_list[:5]

    # 输出到json文件
    f = open(top5_aqi.json, mode=w, encoding=utf-8)
    json.dump(top5_list, f, ensure_ascii=False)
    f.close()
    print(city_list)

if __name__ == __main__:
    main()

最后加上beijing_aqi.json归档、复制、创建新文件json文件就足够了。

[
   {
      "aqi":47,
      "area":"北京",
      "pm2_5":32,
      "pm2_5_24h":33,
      "position_name":"万寿西宫",
      "primary_pollutant":null,
      "quality":"优",
      "station_code":"1001A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":63,
      "area":"北京",
      "pm2_5":37,
      "pm2_5_24h":20,
      "position_name":"定陵",
      "primary_pollutant":"颗粒物(PM10)",
      "quality":"良",
      "station_code":"1002A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":57,
      "area":"北京",
      "pm2_5":40,
      "pm2_5_24h":36,
      "position_name":"东四",
      "primary_pollutant":"细颗粒物(PM2.5)",
      "quality":"良",
      "station_code":"1003A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":44,
      "area":"北京",
      "pm2_5":24,
      "pm2_5_24h":30,
      "position_name":"天坛",
      "primary_pollutant":null,
      "quality":"优",
      "station_code":"1004A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":46,
      "area":"北京",
      "pm2_5":28,
      "pm2_5_24h":38,
      "position_name":"农展馆",
      "primary_pollutant":null,
      "quality":"优",
      "station_code":"1005A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":58,
      "area":"北京",
      "pm2_5":41,
      "pm2_5_24h":32,
      "position_name":"官园",
      "primary_pollutant":"细颗粒物(PM2.5)",
      "quality":"良",
      "station_code":"1006A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":54,
      "area":"北京",
      "pm2_5":38,
      "pm2_5_24h":28,
      "position_name":"海淀区万柳市",
      "primary_pollutant":"细颗粒物(PM2.5)",
      "quality":"良",
      "station_code":"1007A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":102,
      "area":"北京",
      "pm2_5":76,
      "pm2_5_24h":38,
      "position_name":"顺义新城",
      "primary_pollutant":"细颗粒物(PM2.5)",
      "quality":"轻度污染",
      "station_code":"1008A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":80,
      "area":"北京",
      "pm2_5":48,
      "pm2_5_24h":21,
      "position_name":"怀柔镇",
      "primary_pollutant":"臭氧1小时",
      "quality":"良",
      "station_code":"1009A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":77,
      "area":"北京",
      "pm2_5":46,
      "pm2_5_24h":20,
      "position_name":"昌平镇",
      "primary_pollutant":"颗粒物(PM10)",
      "quality":"良",
      "station_code":"1010A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":60,
      "area":"北京",
      "pm2_5":43,
      "pm2_5_24h":32,
      "position_name":"奥体中心",
      "primary_pollutant":"细颗粒物(PM2.5)",
      "quality":"良",
      "station_code":"1011A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":50,
      "area":"北京",
      "pm2_5":35,
      "pm2_5_24h":27,
      "position_name":"古城",
      "primary_pollutant":null,
      "quality":"优",
      "station_code":"1012A",
      "time_point":"2017-07-29T14:00:00Z"
   },
   {
      "aqi":58,
      "area":"北京",
      "pm2_5":40,
      "pm2_5_24h":29,
      "position_name":null,
      "primary_pollutant":"颗粒物(PM2.5),颗粒物(PM10)",
      "quality":"良",
      "station_code":null,
      "time_point":"2017-07-29T14:00:00Z"
   }
]
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除