문제 설명: 단위의 주간 출석 시스템에서 내보낸 테이블 구조가 그림에 표시됩니다.
내보낸 테이블에서 일대다 테이블임을 알 수 있으며 일부 교사는 7개의 레코드에 해당하고 일부 교사는 6개의 레코드만 있을 수 있습니다.
마지막으로 그림과 같이 각 교사의 주간 출석 통계를 가져와야 합니다.
사실 출석시간 전치표인데 학교는 사람이 많고 수작업이 번거롭다. 파이썬으로 처리했는데 매우 빠릅니다.
참고: 내보낸 표는 교사 이름별로 정렬하고 .xls로 저장해야 합니다.
import xlrd
import xlwt
data = xlrd.open_workbook(r"teacherinfo.xls") # 打开教师考勤表
table = data.sheets()[0]
# 获取所有行
nrow = table.nrows
name = table.cell_value(1, 1) # 取第一行老师姓名
flag = True
workbook = xlwt.Workbook(encoding='ascii')
worksheet = workbook.add_sheet("My new Sheet", cell_overwrite_ok=True)
row = 0
col = 1
for i in range(1, nrow):
if flag:
worksheet.write(row, 0, name)
flag = False
if name == table.cell_value(i, 1):
value = table.cell_value(i, 4)
worksheet.write(row, col, value)
col += 1
else:
row += 1 # 姓名不相同,变换行
col = 1
name = table.cell_value(i, 1)
value = table.cell_value(i, 4)
worksheet.write(row, col, value)
flag = True
col += 1
workbook.save("export.xls") # 导出结果
알고리즘 아이디어: 처음부터 맨 아래까지 트래버스하고 열별로 같은 이름을 쓰고 다른 행을 조정한 다음 열별로 씁니다.