Skip to content

Instantly share code, notes, and snippets.

@ShingoHattori
Created April 7, 2022 18:18
Show Gist options
  • Save ShingoHattori/eb57ab2768448398311b1647824d7db6 to your computer and use it in GitHub Desktop.
Save ShingoHattori/eb57ab2768448398311b1647824d7db6 to your computer and use it in GitHub Desktop.
import os
import pandas as pd
import csv
import re
# mast21の2年次時点での必要な分しかわからない.大学院科目やこのルールに従わない奴が出てきた場合破滅する可能性がある.ただ,大抵の場合うまくいくはず.
filename = "SIR114514810.csv"
csv_header = ["学籍番号","学生氏名","科目番号","科目名 ","単位数","春学期","秋学期","総合評価","科目区分","開講年度","開講区分"]
switch = True
datas = []
with open(filename, 'r',encoding="utf-8_sig") as f:
for row in csv.DictReader(f, csv_header):
datas.append(row)
results_keys = ["専門科目_必修", "専門科目_選択", "専門基礎科目_必修", '専門基礎科目_選択', '基礎科目_共通科目_必修科目_総合', '基礎科目_共通科目_必修科目_体育', '基礎科目_共通科目_必修科目_情報', '基礎科目_共通科目_必修科目_外国語', '基礎科目_共通科目_選択科目_総合', '自由', "GB,GB", '博物館', '教職', '国語', '基礎科目_関連科目_選択科目']
results = {}
for key in results_keys:
results[key] = []
required = {"専門科目_必修":"書いてあるとおり", "専門科目_選択":"20~35","専門基礎科目_必修":"わからん", '専門基礎科目_選択':"20~35", '基礎科目_共通科目_必修科目_総合':"2", '基礎科目_共通科目_必修科目_体育':"2", '基礎科目_共通科目_必修科目_情報':"4", '基礎科目_共通科目_必修科目_外国語':"4", '基礎科目_共通科目_選択科目_総合':"1~4", '自由':"0~9", "GB,GB":"0~9",'博物館':"0~9", '教職':'お好きに', '国語':"0~2", '基礎科目_関連科目_選択科目':"6~15"}
for data in datas:
# 専門科目_必修
if re.compile("GC4.{4}").search(data['科目番号']):
results[results_keys[0]].append(data)
# 専門科目_選択
elif re.compile("(GA4|GC5).{4}").search(data['科目番号']):
results[results_keys[1]].append(data)
# 専門基礎科目_必修
elif re.compile("GC1.{4}|GA1[58].{3}").search(data['科目番号']):
results[results_keys[2]].append(data)
# 専門基礎科目_選択
elif re.compile("GC2.{4}|GA1[12346790].{3}").search(data['科目番号']):
results[results_keys[3]].append(data)
# 基礎科目_共通科目_必修科目_総合
elif re.compile("11[123].{4}|122[78].{3}").search(data['科目番号']):
results[results_keys[4]].append(data)
# 基礎科目_共通科目_必修科目_体育
elif re.compile("6[145].{5}").search(data['科目番号']):
results[results_keys[5]].append(data)
# 基礎科目_共通科目_必修科目_情報
elif re.compile("2[12].{5}").search(data['科目番号']):
results[results_keys[6]].append(data)
# 基礎科目_共通科目_必修科目_英語
elif re.compile("31[HKJL]C.{3}").search(data['科目番号']):
results[results_keys[7]].append(data)
# 基礎科目_共通科目_選択科目_総合
elif re.compile("1[24][134567890].{4}|1[24].[12345690].{3}").search(data['科目番号']):
results[results_keys[8]].append(data)
# 自由科目
elif re.compile("8.{6}").search(data['科目番号']):
results[results_keys[9]].append(data)
# GB GE
elif re.compile("(GB|GE).{5}").search(data['科目番号']):
results[results_keys[10]].append(data)
# 博物館科目
elif re.compile("99.{5}").search(data['科目番号']):
results[results_keys[11]].append(data)
# 教職科目
elif re.compile("9[123456780].{5}").search(data['科目番号']):
results[results_keys[12]].append(data)
# 国語
elif re.compile("5.{6}").search(data['科目番号']):
results[results_keys[13]].append(data)
# 基礎科目_関連科目_選択科目 (大学院などは考慮していない)
else:
results[results_keys[14]].append(data)
for key in results_keys:
print("--------------------")
print("--------------------")
print(key)
counter = 0
for result in results[key]:
print("{} | {} | {}".format(result['科目番号'],result['科目名 '],result['単位数']))
counter += float(result['単位数'])
print("Amount required for graduation : {}".format(required[key]))
print("Now you have : {}".format(counter))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment