前言
由于 Wakeup 课程表并未支持医学部课表的在线导入,故摸此鱼,写了一个 python 脚本来完成转换,从而完成医学部课表导入到 Wakeup 课程表的功能:
使用方法
- 登录 医学部门户 ↗,然后选择服务大厅 - 我的课表,点选
列表模式
,然后依次点击导出
、导出文件列表
,下载我的课表.xlsx
。
- 下载 Converter.py ↗ ,或直接使用以下代码,将其移动至和课表文件同一目录下,然后运行即可。
# -*- encoding:utf-8 -*-
#@Time : 2022/08/30 02:01:39
#@File : converter.py
#@Author : Arthals
#@Contact : zhuozhiyongde@126.com
#@Software : Visual Studio Code
from openpyxl import Workbook, load_workbook
import os
import re
# wb = Workbook()
# ws = wb.create_sheet('mysheet', 0)
# wb.save('test.xlsx')
# wb.close()
wb = load_workbook('我的课表.xlsx')
ws = wb['sheet1']
maxRow = ws.max_row
maxCol = ws.max_column
def extractInterger(strin):
return int(re.findall(r'\d+', strin)[0])
def extractWeek(strin):
strin = re.sub(r"[周()]", "", strin)
weeks = re.sub(r",", r"、", strin)
return weeks
def extractDay(strin):
dayDic = {
"星期一": 1,
"星期二": 2,
"星期三": 3,
"星期四": 4,
"星期五": 5,
"星期六": 6,
"星期日": 7
}
return dayDic[strin]
courseList = []
for row in range(2, maxRow + 1):
courseName = ws.cell(row=row, column=2).value
courseStart = extractInterger(ws.cell(row=row, column=8).value)
courseEnd = extractInterger(ws.cell(row=row, column=9).value)
courseWeek = extractWeek(ws.cell(row=row, column=6).value)
courseDay = extractDay(ws.cell(row=row, column=7).value)
courseLocation = ws.cell(row=row, column=11).value
courseTeacher = ws.cell(row=row, column=10).value
courseList.append([
courseName, courseDay, courseStart, courseEnd, courseTeacher,
courseLocation, courseWeek
])
# print(courseList)
wb.close()
output = open("mySchedule.csv", "w+")
output.write("课程名称,星期,开始节数,结束节数,老师,地点,周数\n")
for course in courseList:
for info in range(len(course)):
course[info] = f'"{course[info]}"'
print(course)
output.write(",".join('%s' % id for id in (course)) + "\n")
output.close()
python注意事项
- 本脚本除了内置库外,需要安装
openpyxl
库来读写 xlsx 文件,如果你在运行过程中报错没有此库,可以在终端 / Windows Terminal 中使用pip3 install openpyxl
来安装。 - 关于如何将 csv 文件导入到 Wakeup 课程表中,可以参见 Wakeup 课程表的 官方教程 ↗
- 笔者发现门户上的课表与班群里的课表实际上有一些出入,并不完全相同,但我认为这是教务的问题,所以也提醒下各位记得检查一下,根据实际情况修改。
- 如果有任何问题,欢迎与笔者联系,或在本文下留言。