60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
texfile = r"D:\mathdeptv2\工具\临时文件\临时_学生用_20230622.tex"
|
|
excelfile = r"C:\Users\weiye\Documents\wwy sync\临时工作区\高一期末.xlsx"
|
|
date = "20230620"
|
|
grade = "2025届高一"
|
|
|
|
sheetname = "难度统计"
|
|
max_classnum = 12
|
|
|
|
import re
|
|
import pandas as pd
|
|
|
|
df = pd.read_excel(excelfile,sheet_name = sheetname)
|
|
mark_cols = [i for i in range(2,31)]
|
|
with open(texfile,"r",encoding="u8") as f:
|
|
data = f.read()
|
|
problems_list = re.findall(r"\((\d{6})\)",data)
|
|
|
|
#生成题号(1-n)与题库id对应
|
|
id_dict = {}
|
|
for i in range(len(problems_list)):
|
|
id_dict[i+1] = problems_list[i]
|
|
output = ""
|
|
|
|
#生成题号(1-n)与表格中数据列的对应
|
|
idcol_dict = {}
|
|
for i in id_dict:
|
|
idcol_dict[i] = []
|
|
mincol = -1
|
|
for col_index in range(mincol+1,len(df.columns)):
|
|
col = df.columns[col_index]
|
|
if str(i) == str(col)[:len(str(i))]:
|
|
idcol_dict[i].append(col_index)
|
|
mincol = col_index
|
|
if str(i) == str(col):
|
|
break
|
|
|
|
#生成行号与班级的对应列表
|
|
classrows_dict = {}
|
|
for row in df.iloc[:,0]:
|
|
if type(row) == int or type(row) == float:
|
|
if 1<=row<=12:
|
|
row = int(row)
|
|
classrows_dict[list(df.iloc[:,0]).index(row)] = str(row).zfill(2) + "班"
|
|
|
|
for cl in classrows_dict:
|
|
classname = grade + classrows_dict[cl]
|
|
output += "[BEGIN]\n"
|
|
output += "## "+date+"\n"
|
|
output += "** "+classname+"\n"
|
|
for i in range(len(problems_list)):
|
|
id = id_dict[i+1]
|
|
results_cols = idcol_dict[i+1]
|
|
results = []
|
|
for col in results_cols:
|
|
results.append("%.3f"%df.iloc[cl,col])
|
|
output += id+"\t"+"\t".join(results) + "\n"
|
|
output += "[END]\n\n\n"
|
|
|
|
with open("文本文件/手动统计结果.txt","w",encoding = "u8") as f:
|
|
f.write(output) |