Python:将一个 csv 文件转为 json 文件存储到磁盘
时间:2022-07-22
本文章向大家介绍Python:将一个 csv 文件转为 json 文件存储到磁盘,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题描述
利用记事本创建一个a.csv文件,内容如下:
姓名,语文,数学,英语,总分
张三,80,80,80,240
李四,90,90,90,270
王五,70,70,70,210
赵六,70,80,90,240
编程完成以下功能:
- 1.读取
a.csv
文件的数据内容 - 2.最后增加一列,名称为‘排名’
- 3.根据总分得到正确的排名并打印输出
- 4.将包含排名列的所有数据保存为
a.json
文件 - 5.提交代码和运行截图。
代码实现
"""
@author: shoo Wang
@contact: wangsuoo@foxmail.com
@file: demo04.py
@time: 2020/4/27 0027
"""
import json
# f1 负责读入文件, f2 负责写入文件 + 代表同时具备读写功能
f1 = open('./a.csv', 'r+', encoding='utf-8')
f2 = open('./a.json', 'w+', encoding='utf-8')
# 使用列表推导式, 获取二维结构
table = [i.strip('n').split(',') for i in f1.readlines()]
# 表头增加排名,然后我们就不需要表头了,因为它没法排序
table[0].append('排名')
# 由于 sort 函数和 extend 函数都是没有返回值的
# 所以我们必须事先存储待处理变量,如果题目中没给总分可以 sum([int(j) for j in x[1:]])
sortList = table[1:]
sortList.sort(key=lambda x: x[-1], reverse=True)
# 增加排名数字
for i in range(len(sortList)):
sortList[i].append(str(i + 1))
# 表头加上已经排好序的表体
listHead = table[:1]
listHead.extend(sortList)
# 得到 Python 数据类型的 listHead
# 现在转化成 json 数据类型
# 1.首先建立映射关系,zip() 函数返回的是 zip 类型
# 我们要把 zip 类型转化成 字典类型;
toJson = []
for i in listHead[1:]:
toJson.append(dict(zip(listHead[0], i)))
# 2.写入文件, dump 直接写入文件, dumps 返回 json 数据
json.dump(toJson, f2, ensure_ascii=False, indent=4)
# 释放资源
f1.close()
f2.close()
我也不是一次编写完成的,是在不断的试错中一步一步的解决这个问题的,令我印象最深刻的就是这个sort
函数的用法,需要传入一个回调函数,这里是以列表元素的最后一个值作为key
,我之前在做的时候忘记了题目中已经给了总分,还使用了sum([int(j) for j in x[1:]])
这个排序,多此一举。
代码截图
- Mycat分库分表的简单实践
- Go语言数组
- mac系统下搭建go语言环境
- Golang语言社区--【基础知识】入门
- Go语言的小细节--map
- RBD至FileStore之所见(原理篇)
- FileStore压缩存储(优化篇)
- 深入学习Golang—channel
- 当Python字符串遇上MySQL
- Spring Boot 2.0正式发布,升还是不升呢?
- Spring Cloud构建微服务架构:分布式服务跟踪(入门)
- Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)
- Spring Cloud Gateway真的有那么差吗?
- Spring Cloud构建微服务架构:消息驱动的微服务(核心概念)【Dalston版】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决多种版本python冲突问题
- 探索 App Clips
- ES索引模糊查询
- Dubbo定时任务时间轮(Time Wheel)算法详解
- Vue 中 data 为什么必须是一个函数
- Windows下制作nodejs后台程序的脚本-开机自启动
- Siamese Network & Triplet NetWork
- js常用函数集锦(持续更新)
- 《Java从入门到失业》第五章:继承与多态(5.8-5.10):多态与Object类
- 构建一个适合stm32mp157系列开发板的嵌入式Linux系统
- linux 达梦数据库 命令行 卸载
- Access Control: Database(数据库访问控制)最新解析及完整解决方案
- 启动Apache Atlas时报错
- Apache Atlas 安装部署
- SwiftUI:禁止用户交互