import csv def load_leave(Rota, file_name="leave.csv"): shifts = Rota.get_shift_names() with open(file_name, newline="") as f: reader = csv.reader(f, delimiter=',', quotechar='|') leave = {} requests = {} site_prefs = {} order = [] n = 0 for row in reader: r = row[2:] # header, extract names if n == 0: names = r order = names for name in names: leave[name] = [] requests[name] = [] site_prefs[name] = [] # preferred site if n == 5: for i in range(len(r)): pref = r[i].lower() if pref == "1": site_prefs[order[i]].append(pref) else: site_prefs[order[i]].append("0") if n > 6: for i in range(len(r)): lower_item = r[i].lower() if lower_item != "": # This may be easier to do as a dict if lower_item in shifts: requests[order[i]].append((row[0], lower_item)) else: leave[order[i]].append((row[0], lower_item)) n = n + 1 return (leave, requests, site_prefs) #load_leave()