【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)
相关推荐
CodeCraft Studio2 小时前
PDF处理控件Aspose.PDF教程:使用 Python 将 PDF 转换为 Base64
开发语言·python·pdf·base64·aspose·aspose.pdf
零点零一2 小时前
VS+QT的编程开发工作:关于QT VS tools的使用 qt的官方帮助
开发语言·qt
困鲲鲲3 小时前
Python中内置装饰器
python
摩羯座-185690305944 小时前
Python数据可视化基础:使用Matplotlib绘制图表
大数据·python·信息可视化·matplotlib
lingchen19064 小时前
MATLAB的数值计算(三)曲线拟合与插值
开发语言·matlab
爱隐身的官人4 小时前
cfshow-web入门-php特性
python·php·ctf
gb42152875 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
THMAIL5 小时前
量化股票从贫穷到财务自由之路 - 零基础搭建Python量化环境:Anaconda、Jupyter实战指南
linux·人工智能·python·深度学习·机器学习·金融
~-~%%5 小时前
从PyTorch到ONNX:模型部署性能提升
人工智能·pytorch·python
一朵梨花压海棠go5 小时前
html+js实现表格本地筛选
开发语言·javascript·html·ecmascript