【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)
相关推荐
数据智能老司机3 分钟前
GPU 编程实战——使用 PyCUDA 与 CuPy 功能
人工智能·python·gpu
Forward♞7 分钟前
Qt——实现”Hello World“、认识对象树与Qt坐标系
开发语言·qt
草莓熊Lotso9 分钟前
《吃透 C++ 类和对象(中):拷贝构造函数与赋值运算符重载深度解析》
开发语言·c++·经验分享·笔记·其他
楚Y6同学18 分钟前
QT之键盘控制虚拟遥控系统开发总结
开发语言·c++·qt·串口通信
Cl_rown去掉l变成C34 分钟前
第R5周:天气预测
人工智能·python·深度学习·算法·tensorflow2
天下弈星~37 分钟前
变分自编码器VAE的Pytorch实现
图像处理·pytorch·python·深度学习·vae·图像生成·变分自编码器
这里有鱼汤1 小时前
新型震荡器CyberOsc指标详解及完整策略源码(含图)
python
一百天成为python专家1 小时前
OpenCV图像平滑处理方法详解
开发语言·人工智能·python·opencv·机器学习·支持向量机·计算机视觉
软测进阶1 小时前
【Python】Python 函数基本介绍(详细版)
开发语言·python
freed_Day2 小时前
Java进阶学习之Stream流的基本概念以及使用技巧
java·开发语言·学习