前言#
由於 Wakeup 課程表並未支援醫學部課表的線上匯入,故摸此魚,寫了一個 python 腳本來完成轉換,從而完成醫學部課表匯入到 Wakeup 課程表的功能:
使用方法#
- 登入 醫學部門戶,然後選擇服務大廳 - 我的課表,點選
列表模式
,然後依次點選匯出
、匯出檔案列表
,下載我的課表.xlsx
。
- 下載 Converter.py ,或直接使用以下程式碼,將其移動至和課表檔案同一目錄下,然後執行即可。
# -*- encoding:utf-8 -*-
#@Time : 2022/08/30 02:01:39
#@File : converter.py
#@Author : Arthals
#@Contact : [email protected]
#@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()
注意事項#
- 本腳本除了內建庫外,需要安裝
openpyxl
庫來讀寫 xlsx 檔案,如果你在執行過程中報錯沒有此庫,可以在終端機 / Windows Terminal 中使用pip3 install openpyxl
來安裝。 - 關於如何將 csv 檔案匯入到 Wakeup 課程表中,可以參見 Wakeup 課程表的 官方教程
- 筆者發現門戶上的課表與班群裡的課表實際上有一些出入,並不完全相同,但我認為這是教務的問題,所以也提醒下各位記得檢查一下,根據實際情況修改。
- 如果有任何問題,歡迎與筆者聯繫,或在本文下留言。