派森 #P128. csv存json格式

描述

编写一个 Python 程序,读取movie.in(csv格式,utf-8编码) 的数据,将数据转成保存到movie.out(接送格式,utf-8编码)文件中。

格式

输入

movie.in文件,测试格式,utf-8编码。

输出

movie.out,json格式,utf-8编码

样例

输入

movie.in

输出

moive.out

输出文件格式

[{"片名": "肖申克的救赎","上映年份": "1994","评分": "9.7","评价人数": "2317937","导演": "弗兰克·德拉邦特","编剧": "弗兰克·德拉邦特 / 斯蒂芬·金","主演": "蒂姆·罗宾斯 / 摩根·弗里曼 / 鲍勃·冈顿 / 威廉姆·赛德勒 / 克兰西·布朗 / 吉尔·贝罗斯 / 马克·罗斯顿 / 詹姆斯·惠特摩 / 杰弗里·德曼 / 拉里·布兰登伯格 / 尼尔·吉恩托利 / 布赖恩·利比 / 大卫·普罗瓦尔 / 约瑟夫·劳格诺 / 祖德·塞克利拉 / 保罗·麦克兰尼 / 芮妮·布莱恩 / 阿方索·弗里曼 / V·J·福斯特 / 弗兰克·梅德拉诺 / 马克·迈尔斯 / 尼尔·萨默斯 / 耐德·巴拉米 / 布赖恩·戴拉特 / 唐·麦克马纳斯","类型": "剧情 / 犯罪","国家/地区": "美国","语言": "英语","时长(分钟)": "142"},{"片名": "霸王别姬","上映年份": "1993","评分": "9.6","评价人数": "1720638","导演": "陈凯歌","编剧": "芦苇 / 李碧华","主演": "张国荣 / 张丰毅 / 巩俐 / 葛优 / 英达 / 蒋雯丽 / 吴大维 / 吕齐 / 雷汉 / 尹治 / 马明威 / 费振翔 / 智一桐 / 李春 / 赵海龙 / 李丹 / 童弟 / 沈慧芬 / 黄斐 / 徐杰","类型": "剧情 / 爱情 / 同性","国家/地区": "中国","语言": "汉语普通话","时长(分钟)": "171"},略...
]

代码:

import json
fr = open('movie.in', 'r', encoding='utf-8')
fw = open('movie.out', 'w', encoding='utf-8')
lst = []
for line in fr:line = line.replace("\n", "")lst.append(line.split(","))
fr.close()
for i in range(1, len(lst)):lst[i] = dict(zip(lst[0], lst[i]))
json.dump(lst[1:], fw, indent=4, ensure_ascii=False)
fw.close()

代码解析:

  1. import json:导入JSON模块,用于处理JSON格式的数据。
  2. fr = open('movie.in', 'r', encoding='utf-8'):打开名为'movie.in'的文件,以只读模式读取('r'),使用UTF-8编码(encoding='utf-8'),并将文件对象赋值给变量fr
  3. fw = open('movie.out', 'w', encoding='utf-8'):打开名为'movie.out'的文件,以写入模式('w'),使用UTF-8编码(encoding='utf-8'),并将文件对象赋值给变量fw
  4. lst = []:创建一个空列表lst,用于存储读取的数据。
  5. for line in fr::遍历文件对象fr中的每一行数据,并将每一行赋值给变量line
  6. line = line.replace("\n", ""):使用字符串的replace()方法将每一行末尾的换行符"\n"替换为空字符串"",去除换行符。
  7. lst.append(line.split(",")):使用字符串的split()方法按逗号","将每一行分割成多个部分,并将分割后的结果作为列表添加到lst中。例如,如果一行是"电影1,导演1,主演1",则会变成列表["电影1", "导演1", "主演1"]。
  8. fr.close():关闭文件fr
  9. for i in range(1, len(lst))::遍历列表lst中从索引1开始到最后的部分。这里通过range()函数生成一个范围,从1到len(lst)(列表长度)。
  10. lst[i] = dict(zip(lst[0], lst[i])):使用zip()函数将第一个元素和当前元素对应的部分打包成一个元组,然后使用dict()函数将元组转换为字典。将转换后的字典赋值给列表lst中当前的元素,实现将每一行的数据与第一行(即表头)对应起来,形成键值对的结构。
  11. json.dump(lst[1:], fw, indent=4, ensure_ascii=False):使用JSON模块的dump()函数将列表lst中从索引1开始到最后的部分转换为JSON格式,并将结果写入到文件fw中。参数indent=4指定缩进为4个空格,ensure_ascii=False表示不对非ASCII字符进行转义。
  12. fw.close():关闭文件fw

功能是读取名为'movie.in'的文件中的数据,将其中的每一行按逗号分割成多个部分,并将每一行数据与第一行(表头)对应起来形成键值对的结构。然后将转换后的数据以JSON格式写入到名为'movie.out'的文件中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/50159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内ChatGPT对比与最佳方案

很久没写内容了,主要还是工作占据了太多时间。简单分享下我这段时间的研究吧,由于时间仓促,有很多内容没有具体写,请自行到我分享的网站体验查看。 前言 ChatGPT 的出现确实在很大程度上改变了世界。许多人已经亲身体验到了ChatGPT作为一个…

GOLANG面向对象:封装 继承 多态

面向过程转换到面向对象,那么必然会涉及到几个特性:封装,继承,多态,那么Golang中的面向过程会有什么特性?那我们来仔细说一说: 封装: 首先要一个类的概念,类就像一下工厂…

HarmonyOS应用开发者高级认证练习题

系列文章目录 HarmonyOS应用开发者基础认证练习题 HarmonyOS应用开发者高级认证练习题 文章目录 系列文章目录前言一、判断二、单选三、多选 前言 本文所有内容来源于个人进行HarmonyOS应用开发者系列认证的学习过程中所做过的练习题,所有答案均是个人作答&#x…

iptables防火墙(SNAT与DNAT)

目录 1 SNAT 1.1 SNAT原理与应用 1.2 SNAT工作原理 1.3 SNAT转换前提条件 2 SNAT示例 ​编辑 2.1 网关服务器配置 2.1.1 网关服务器配置网卡 2.1.2 开启SNAT命令 2.2 内网服务器端配置 2.3 外网服务器端配置 2.4 网卡服务器端添加规则 2.5 SNAT 测试 3 DNAT 3.1 网卡…

wazuh环境配置及案例复现

文章目录 wazuh环境配置及案例复现wazuh环境配置 案例复现 wazuh环境配置及案例复现 wazuh环境配置 进入官网下载ova软件 https://documentation.wazuh.com/current/deployment-options/virtual-machine/virtual-machine.html 打开下载的ova,密码和用户名会显示…

2分钟搭建自己的GPT网站

如果觉得官方免费的gpt(3.5)体验比较差,总是断开,或者不会fanqiang,那你可以自己搭建一个。但前提是你得有gpt apikey。年初注册的还有18美金的额度,4.1号后注册的就没有额度了。不过也可以自己充值。 有了…

开发一个npm组件包

vue项目初始化 vue create mytest 启动项目以后 组件开发 开发的组件写在 package中 如下如例 开发一个 listpage的组件 里面放了一个a链接注册组件配置打包 "package": "vue-cli-service build --target lib ./src/package/index.js --name managerpage -…

linux文本三剑客

linux文本三剑客 1、grep2、sed 1、grep 过滤 参数用法作用-igrep -i STRING xxx.txt从xxx.txt文件查找不区分大小写STRING-wgrep -w STRING xxx.txt精确匹配STRING-egrep -e STRING1 -e STRING2 xxx.txt查找多个STRING行-ngrep -n STRING xxx.txt查看STRING 在第几行-vgrep …

使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。

文章目录 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。2、安装搭建私有仓库 Harbor3、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。具体要求如下:4、Dockerfile快速搭建自己专属的L…

统计学补充概念07-比较树

概念 在层次聚类中,聚类结果可以以树状结构表示,通常称为树状图(Dendrogram)。树状图展示了数据点如何被合并或分裂以形成聚类的层次结构。通过观察树状图,可以更直观地理解数据点之间的相似性和关系。 在比较树状图…

【每日一招小技巧】编译安装提升系统自带的java版本

hello,大家好,又到了每日一招的环节,今天要给大家介绍的是,如何用源码安装的方式,升级系统自带的ava版本! 首先,我们要查看一下我们系统自带的java版本是多少,怎么查看呢&#xff1…

机器学习简介

文章目录 引言1. 从找规律说起2. 机器学习应用2.1 有监督学习2.2 无监督学习2.2.1 聚类2.2.2 降维 3. 机器学习一般流程4. 机器学习常用概念5. 深度学习简介5.1 引入 -- 猜数字5.2 深度学习5.2.1 隐含层/中间层5.2.2 随机初始化5.2.3 损失函数5.2.4 导数与梯度5.2.5 梯度下降5.…

协议的分层结构

1.1TCP/IP 协议 为了使各种不同的计算机之间可以互联,ARPANet指定了一套计算机通信协议,即TCP/IP 协议(族). 注意TCP /IP 协议族指的不只是这两个协议 而是很多协议, 只要联网的都使用TCP/IP协议族 为了减少 协议设计的复杂度 ,大…

【Nginx】Nginx 简介

Ngnix 特点 模块化设计:良好的扩展性,可以通过模块方式进行功能扩展。高可靠性:主控进程和 worker 是同步实现的,一个 worker 出现问题,会立刻启动另一个 worker。内存消耗低:一万个长连接(kee…

Php“牵手”淘宝商品销量数据采集方法,淘宝API接口申请指南

淘宝天猫商品销量接口 API 是开放平台提供的一种 API 接口,它可以帮助开发者获取商品的详细信息,包括商品的标题、描述、图片,月销量,总销量等信息。在电商平台的开发中,销量接口API是非常常用的 API,因此本…

什么是遗传算法(Genetic Algorithm,简称 GA)?

目录 一、遗传算法介绍二、遗传算法应用场景三、遗传算法具体案列1、求解旅行商问题(TSP 问题)2、求解一个矩阵中的最大值3、基于遗传算法的图像压缩方法 四、遗传算法重要意义五、生物进化与遗传算法之间的关系 一、遗传算法介绍 遗传算法(…

VUE id回写name的问题

起因 我们有部门,单位,传的是id,但是页面不管显示,还是回写,新增都要展示单位名/部门名。这个其实是前端的事情,但是我目前是前端也是我做,我们使用的是vue3,这个问题用List可能不好…

天润融通「微藤大语言模型平台2.0」以知识驱动企业高速增长

8月23日,天润融通(又称“天润云”,2167.HK),正式发布「微藤大语言模型平台2.0」。 “大模型企业知识企业知识工程”。 “不能有效记录和管理知识的企业是不能持续进步的。在企业的生产流程中,相比于其他场景&#xff0…

BigDecimal 工具类

import java.math.BigDecimal; import java.math.RoundingMode;/*** 简化BigDecimal计算的小工具类*/ public class BigDecimalUtil {/*** 默认除法运算精度*/private static final int DEF_DIV_SCALE 10;private BigDecimalUtil() {}/*** 提供精确的加法运算。** param v1 被…

【网络安全】防火墙知识点全面图解(二)

本系列文章包含: 【网络安全】防火墙知识点全面图解(一)【网络安全】防火墙知识点全面图解(二) 防火墙知识点全面图解(二) 21、路由器的访问控制列表是什么样的?22、防火墙的安全策…