请同学们用自己班级的花名册(excel文件)(三列:序号、姓名、学号),使用python将与自己同寝室同学的信息排到列表的最前面,并将得到的列表制作为JSON格式,并将JSON格式转成CSV格式进行有效存
时间: 2024-02-13 15:00:19 浏览: 203
好的,我来帮你完成这个任务。假设你的班级花名册文件名为 `class_roster.xlsx`,请将下面的代码保存为 `convert_json_csv.py` 文件,并将班级花名册文件与脚本文件放在同一目录下。
```
import json
import pandas as pd
import openpyxl
# 获取同寝室同学的姓名和学号
roommate1 = input("请输入第一位同寝室同学的姓名:")
roommate2 = input("请输入第二位同寝室同学的姓名:")
# 加载班级花名册
workbook = openpyxl.load_workbook('class_roster.xlsx')
worksheet = workbook.active
# 将姓名和学号保存到列表中
name_list = []
number_list = []
for row in worksheet.iter_rows(min_row=2, min_col=2, max_col=3):
name = row[0].value
number = row[1].value
# 判断是否同寝室
if name == roommate1 or name == roommate2:
name_list.insert(0, name)
number_list.insert(0, number)
else:
name_list.append(name)
number_list.append(number)
# 构造 DataFrame 并保存为 CSV 文件
dataframe = pd.DataFrame({'姓名': name_list, '学号': number_list})
dataframe.to_csv("class_roster.csv", index=False, sep=',')
# 将 DataFrame 转换为 JSON 格式并保存到文件中
json_data = dataframe.to_dict(orient='records')
with open('class_roster.json', 'w', encoding='utf-8') as f:
json.dump(json_data, f, ensure_ascii=False, indent=4)
```
上述代码中,我们首先获取了同寝室同学的姓名,然后加载了班级花名册文件,并将姓名和学号保存到列表中。如果姓名与同寝室同学的姓名相同,就将其添加到列表的最前面,否则就添加到列表的最后面。最后,我们使用 Pandas 将列表构造为 DataFrame,并将其保存为 CSV 文件。同时,我们将 DataFrame 转换为 JSON 格式,并将其保存到文件中。
请注意,由于 `to_dict()` 方法默认以列名为键,所以我们需要指定 `orient='records'` 参数,以将每一行转换为一个字典。
阅读全文