Bootstrap

一个小代码,学习一下怎么自动处理表格

今天接到一个任务,要把学生的作业统计出来,统计每个同学交了多少次。

最近正在学习python,准备写一个练一下手

问题描述:

1.导出数据里边每个学生的姓名是序号+学号+姓名格式,但是同学们的命名顺序五花八门

有先写序号的,有先写名字的,所以需要提取中文获取他的名字

2.如果这个同学这次作业完成,那么在xlsx表格中他所在行有一个评分或者”带批改“(qq作业导出格式),没有提交的话改位置是”未提交“,因为只需要统计是否提交,所以只提取是否为”未提交“

3.有多次作业,需要提取每次作业数据,需要合理安排循环

解决方案:

读取输出表格格式

循环读取每次作业统计

提取每一行的姓名和对应的提交作业状态,在输出表格中找到他,如果是”未提交“,则把该行改为原来行添加一个[0],反之添加[1],

因为重名同学只有一个,所以不考虑用学号判定是否同名。

代码如下(chatgpt主力):

import os
import pandas as pd
import re

# 设置文件夹路径
folder_path ='path'
folder_path_sta ='path'
# 获取文件夹内所有文件名
files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx')]
stat_homework =pd.read_excel(folder_path_sta,header=None)
stat_homework = stat_homework.values.tolist()
# print(stat_homework)
# print(len(stat_homework))
# 初始化一个空列表,用于存储每个文件的数据作为列表
# 准备正则表达式模式,匹配汉字
pattern = re.compile(r'[\u4e00-\u9fff]+')
# modified_list = []
# 遍历文件名列表,读取每个Excel文件
for file in files:
    file_path = os.path.join(folder_path, file)  # 获取文件的完整路径
    df = pd.read_excel(file_path)  # 使用pandas读取Excel文件
    data = df.values.tolist()
    for row in data:
        # 取得每行的第一个元素
        first_element = row[0]
        # 使用正则表达式提取汉字
        chinese_characters = pattern.findall(first_element)
        # 将提取到的汉字连接成一个字符串
        chinese_string = ''.join(chinese_characters)
        # print(chinese_string)
        just_deliver = row[1]
        # print(just_deliver)
        # 打印或处理提取到的汉字
        for i,row_new in enumerate(stat_homework):
            # 检查指定元素是否在当前行
            # print(row_new)
            if chinese_string in row_new:
                print(chinese_string)
                print(just_deliver)
                print(i)
                print(row_new)
                # 如果存在,给这一行末尾添加一个1
                if just_deliver == "未提交":
                    row_new= row_new + ['是']
                else:
                    row_new = row_new + ['否']
                stat_homework[i] = row_new
                # print(row_new)
            # else:
            #     row_new = row_new + ["没有找到他的名字"]
            # modified_list.append(row_new)
print(stat_homework[0])
df_back = pd.DataFrame(stat_homework)

# 指定输出的.xlsx文件路径
output_file = 'path'

最后可以达到这样的效果 后边使用excel统计的

;