【python脚本】课表信息生成 course_test(源代码)

在处理excel表格数据中编写的一个可以自动处理课表信息的脚本。

python 复制代码
import os
import openpyxl
import re

# 检查文件是否存在
file_name = "course_info.xlsx"
if os.path.exists(file_name):
    # 如果文件存在,先删除
    os.remove(file_name)

# 创建一个新的 Excel 工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active
# 写入表头
sheet.append(["序号", "课程名称", "周次", "星期", "节次", "上课地点", "任课老师"])
# 保存 Excel 文件
workbook.save(file_name)

def append_data_to_excel(excel, new_data):
    # 打开已存在的 Excel 文件
    workbook = openpyxl.load_workbook(excel)
    # 选择要添加数据的工作表,这里假设工作表的名字是 "Sheet"
    sheet = workbook["Sheet"]
    # 准备要添加的新数据,例如一个列表
    # new_data = [num, CourseName, week, day, lesson, classroom, teacher]
    # 在工作表中添加新数据
    sheet.append(new_data)
    # 保存修改后的 Excel 文件
    workbook.save(excel)

# workbook = xlrd.open_workbook('./文献检测情况汇总(持续更新).xlsx')
workbook = openpyxl.load_workbook('./课表数据.xlsx')
work_sheet = workbook['data']

num = 0  # 初始化序号

for row in work_sheet.iter_rows(values_only=True, min_row=2,):
    CourseName = row[2];
    CoureseTimeAddress = row[25];
    # print(CourseName,CoureseTimeAddress)
    try:
        message = CoureseTimeAddress.split(';')
        # print(message)
    except:
        # print("no message")
        continue

    for m in message:
        if m == '':
            continue

        m = m.split()
        # print(m)
        week = m[0]
        day = m[1][:3]

        # 使用正则表达式提取方括号内的内容
        pattern = r'\[(.*?)\]'  # 匹配方括号内的任意字符,非贪婪模式
        matches = re.findall(pattern, m[1])
        lesson = matches[0]
        # print(lesson)

        # 使用正则表达式提取 "1-204" 模式
        pattern = r'\b\d+-\d+\b'  # 匹配数字-数字模式的单词边界
        matches = re.findall(pattern, m[1])
        classroom = matches[0]
        # print(classroom)

        teacher = m[2]

        # num = num + 1
        # print(num, CourseName, week, day, lesson, classroom, teacher)

        week = week.split(",")
        # print(week)

        for w in week:
            flag = 0
            if '单' in w:
                flag = 1
                if '周' not in w:
                    w = w[:-1]
                else:
                    w = w[:-2]
            elif '双' in w:
                flag = 2
                if '周' not in w:
                    w = w[:-1]
                else:
                    w = w[:-2]
            else:
                flag = 0
                if '周' in w:
                    w = w[:-1]

            # print(w)

            if '-' in w:
                a, b = w.split('-')

                try:
                    a, b = int(a), int(b)
                except:
                    print("error")
                    print(a,b)

                for i in range(a,b+1):
                    if flag==1 and i%2==0:
                        continue
                    if flag==2 and i%2!=0:
                        continue
                    num = num + 1
                    new_data = [num, CourseName, i, day, lesson, classroom, teacher]
                    print(num, CourseName, i, day, lesson, classroom, teacher)
                    # 将数据存入excel表格
                    append_data_to_excel("course_info.xlsx", new_data)
            else:
                num = num + 1
                w = int(w)
                new_data = [num, CourseName, w, day, lesson, classroom, teacher]
                print(num, CourseName, w, day, lesson, classroom, teacher)
                # 将数据存入excel表格
                append_data_to_excel("course_info.xlsx", new_data)
相关推荐
Kalika0-042 分钟前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
_.Switch44 分钟前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
代码雕刻家1 小时前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
一个闪现必杀技1 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web1 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
龙图:会赢的1 小时前
[C语言]--编译和链接
c语言·开发语言
小鹿( ﹡ˆoˆ﹡ )1 小时前
探索IP协议的神秘面纱:Python中的网络通信
python·tcp/ip·php
卷心菜小温2 小时前
【BUG】P-tuningv2微调ChatGLM2-6B时所踩的坑
python·深度学习·语言模型·nlp·bug
陈苏同学2 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹2 小时前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt