1.定义load_data函数,实现txt文件读取。
2.定义mapper函数,实现txt文件数据的解析,以字典形式返回数据。
3.定义reducer,实现月平均温度的计算
4.并调用上述定义的三个函数完成月平均气温的计算及展示
如何用python实现对TXT文件的处理
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 何湾湾 2020-06-26 20:23关注
def load_data(file_name: str) -> list: """ 读取文件中数据,以列表形式返回 ['20160101,00,霾,1024,67,-2,212,168,158', '20160101,01,霾,1024,70,-3,209,164,132', ...] :param file_name: 文件名 :return: 文件中的行数据,不包括首行,以列表形式返回 """ file = open(file_name, 'r', encoding='UTF-8') lines = [] next(file) for line in file: lines.append(line.strip('\n')) file.close() return linesdef mapper(lines: list) -> map: """ 解析列表中数据,以字典形式返回数据。{'201601':[-2,-3,...],'201602':[],...} :param lines:行数据,load_data函数的返回值 :return:解析后的行数据,以字典形式返回,key为月份,value为对应月份所有温度数据 """ m = {} lines_len = len(lines) for i in range(lines_len): j = lines[i].split(sep=',') if j[5] != 'N/A': if str(int(eval(j[0] + "/100"))) in m: m[str(int(eval(j[0] + "/100")))] += [int(j[5])] else: m[str(int(eval(j[0] + "/100")))] = [int(j[5])] return mdef reducer(m: map) -> map: """ 计算月平均温度 :param m: mapper函数的返回值 :return: 月平均气温,以map形式返回,key为月份,value为平均温度 """ ret = {} for a in range(201601, 201607): ret[str(a)] = (round(sum(m[str(a)]) / len(m[str(a)]), 2)) return retfile_name = 'beijing.txt'lines = load_data(file_name)m = mapper(lines)result = reducer(m)for key in result.keys(): print(key,result[key])
解决 1无用
悬赏问题
- ¥15 grbl或G代码单独获取速度或位置的命令事什么?
- ¥15 uniapp地图组件show-location的方向箭偏差
- ¥15 ntp客户端对时C语言
- ¥15 python视觉识别调用鼠标宏驱动实现鼠标实时移动到目标人物中心,
- ¥15 手机登录公司网站需要人脸识别,UC浏览器提示这样,有人知道解决方法吗
- ¥15 《C程序设计语言》第4章第一个例题无法输出
- ¥15 linux命令行中的一个问题
- ¥15 如何让 python 正确发起 http2 请求?
- ¥15 前端el-table表头显示不全
- ¥30 如何实现用乐迪AT9S遥控器控制步进电机