我正在尝试为教职员工和学生创建一个基于网络的学校时间表视图。我使用django1.8将其输出到一个表中,如果这有什么不同的话。你知道吗
示例学生CSV文件:http://pastebin.com/Jf8My0RH 示例教师CSV文件:http://pastebin.com/ie3qeT3R
所有数据都存储在多个CSV文件中。我的学生时间表运行良好,使用以下代码:
def get_timetable(StudentCode):
timetable = []
with open(TT_BASE_DIR + 'NStudTT.txt') as student_timetable:
reader = csv.DictReader(student_timetable, fieldnames=("StudentName","StudentCode","DayNo","PeriodNo","ClassCode","TeacherCode","RoomCode","RollClassCode","LessonType"))
for row in reader:
if row['StudentCode'] == StudentCode:
for day in range(11):
if int(row['DayNo']) == day:
timetable.append(row)
return(timetable[x:x+10] for x in range(0, len(timetable),10))
这将返回一个由10个列表组成的列表,每个列表包含10个字典项,我可以将它们输出到一个表中。你知道吗
我也想为老师们做同样的事情,但是他们并不总是有一个完整的时间表。这是我用来从CSV文件中获取数据的代码:
def get_teacher_timetable(TeacherCode):
timetable = []
with open(TT_BASE_DIR + 'NTRTimeT.txt') as teacher_timetable:
reader = csv.DictReader(teacher_timetable, fieldnames=("TeacherCode", "RoomCode", "DayNo", "PeriodNo", "RollClassCode", "ClassCode"))
for row in reader:
if row['TeacherCode'] == TeacherCode:
for day in range(11):
if int(row['DayNo']) == day:
timetable.append(row)
return(temp_timetable)
我可以让它返回所有的条目,在一个字典列表中。我需要做的是将字典按DayNo分组,然后将每组插入一个新的列表中。不过,我想根据PeriodNo将条目插入列表。因此,如果在第4阶段有一个备用的,它将创建一个NULL元素,或“”等。在最后,我应该有一个10个列表的列表,每个列表中有10个lessons/NULL。你知道吗
我想做的事可能吗?你知道吗
看看你的示例数据,看起来数据将按TeacherCode,DayNo,PeriodNo排序,所以我的解决方案也是这样。你知道吗
为了简化,首先过滤
reader
数据结构,使其仅包含相关行。你知道吗使用2个for循环在每天和时间段上循环。如果有相应的行,请将该行添加到明细表中。如果没有,请创建一个带有适当空格的新字典,并将其添加到计划中。你知道吗
我没有在返回时编译列表,而是使用一个列表来附加一天的所有时间段,然后在每天之后将该列表附加到完整的时间表中。你知道吗
代码如下:
如果有更好的方法遍历数据,请告诉我。你知道吗
相关问题 更多 >
编程相关推荐