清欢573 2022-05-10 13:28 采纳率: 60%
浏览 867
已结题

学生课程成绩单文件SCORE.CSV,存有5名同学各五门课的成绩。将文件内容转为JSON格式写入新文件score.json中。这是将CSV转成JSON的文件格式转换题,需要把“填空”处的代码补出来

import json # 导入转json格式所需的库
def csv_to_list(file):
"接收csv文件名为参数,将每行数据根据逗号切分为列表
返回一个将每行数据转的列表做为元素的二维列表"
with open(file, 'r', encoding='utf-8') as data: score_ls = [] # 建立一个空的列表 for line in data: # 遍历data中的每一行
# 去掉行末换行符,根据逗号切分为列表 line_data = 填空
score_ls.append(line_data) # 将每行数据加入列表中
return score_ls # 返回转为列表的数据
def list_to_json(score_ls):
接收列表为参数,将数据转为json格式写入文件,函数无返回值"
score_dict = [] # 建立一个空的列表 for i in range(1, len(score_ls)):
score_dict.append(填空)

列表第一个元素与后面每个元素中对应元素生成键值对并转为字典

将字典附加到列表中

创建json文件,将列表中的数据编码为json格式后写入文件

with open("score.json", "w", encoding='utf-8') as data_json:
json.填空(score_dict,data_json, indent=4,ensure_ascii=False)
def json_to_csv(file):
"""接收json文件名为参数,将数据转为csv格式写入文件,
函数无返回值"""
with open(file, "r", encoding='utf-8') as data_json:
data_ls = 填空 # 转为元素是字典的列表
data_list = []
title = list(data_ls[0].keys()) # 返回字典中所有的键,标题行
data_list.append(title)
for dic in data_ls: # 遍历列表,dic为字典类型
data_list.append(填空) # 将字典值加入列表
with open("new_score.csv", "w", encoding='utf-8') as data_csv:
for ls in data_list: # 遍历列表,ls为列表中元素,仍为列表
data_csv.write(",".join(ls) + "\n")

将元素用逗号连接为带换行符的字符串,写入文件中

csv_file = './score.csv' # 原始csv格式文件
json_file = './score.json' # 准备创建并写入的json文件
data_in_ls = csv_to_list(csv_file) # 读csv文件中的数据到列表中
list_to_json(data_in_ls) # 列表中的数据转json格式并写入json文件

  • json_to_csv(json_file) # 读json中的数据,转为csv格式写入文件
  • 写回答

1条回答 默认 最新

  • 溪风沐雪 2022-05-10 15:36
    关注

    我先尝试填了一下,你看看哪些有问题:

    import json # 导入转json格式所需的库
    def csv_to_list(file):
        #"接收csv文件名为参数,将每行数据根据逗号切分为列表
        #返回一个将每行数据转的列表做为元素的二维列表"
        with open(file, 'r', encoding='utf-8') as data: 
            score_ls = [] # 建立一个空的列表 
            for line in data: # 遍历data中的每一行
                # 去掉行末换行符,根据逗号切分为列表 
                line_data = line.strip().split(',')
                score_ls.append(line_data) # 将每行数据加入列表中
        return score_ls # 返回转为列表的数据
    def list_to_json(score_ls):
        #接收列表为参数,将数据转为json格式写入文件,函数无返回值"
        score_dict = [] # 建立一个空的列表 
        for i in range(1, len(score_ls)):
            score_dict.append(score_ls[i])
    
        #列表第一个元素与后面每个元素中对应元素生成键值对并转为字典
        #将字典附加到列表中
        #创建json文件,将列表中的数据编码为json格式后写入文件
        with open("score.json", "w", encoding='utf-8') as data_json:
            json.dumps(score_dict,data_json, indent=4,ensure_ascii=False)
    def json_to_csv(file):
        """接收json文件名为参数,将数据转为csv格式写入文件,函数无返回值"""
        with open(file, "r", encoding='utf-8') as data_json:
            data_ls = json.load(data_json.readlines) # 转为元素是字典的列表
        data_list = []
        title = list(data_ls[0].keys()) # 返回字典中所有的键,标题行
        data_list.append(title)
        for dic in data_ls: # 遍历列表,dic为字典类型
            data_list.append(dic) # 将字典值加入列表
        with open("new_score.csv", "w", encoding='utf-8') as data_csv:
            for ls in data_list: # 遍历列表,ls为列表中元素,仍为列表
                data_csv.write(",".join(ls) + "\n")
    
    #将元素用逗号连接为带换行符的字符串,写入文件中
    csv_file = './score.csv' # 原始csv格式文件
    json_file = './score.json' # 准备创建并写入的json文件
    data_in_ls = csv_to_list(csv_file) # 读csv文件中的数据到列表中
    list_to_json(data_in_ls) # 列表中的数据转json格式并写入json文件
    json_to_csv(json_file) # 读json中的数据,转为csv格式写入文件
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 5月10日

悬赏问题

  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持