# Oznaczenia zmiennych: # K - Klasa # N - Nazwisko # I - Imie # L - Login do librusa import codecs as cd def SprawdzKlasa(K): if len(K.split(' ')) != 2: # Wywołuje błąd jeżeli napis nie dzieli się w pożądanym formacie blad = int('x') # for x in range(0,10): # if K[1:].find(str(x)) != -1: # Wywołuje bląd jeżeli w nazwie klasy (poza numerem klasy) znajduje się liczba blad = int('x') # numery_niedozwolone = [0,9,8,7,6,5,4] # Określa numery klas które nie istnieją for x in numery_niedozwolone: # if K[0] == str(x): # Wywołuje błąd jeżeli numer klasy jest równy numerowi niedozwolonemu blad = int('x') # szkoly = ['BS', 'LO'] # Określa istniejące szkoly if K.split(' ')[1] not in szkoly: # Wywołuje błąd jeżeli szkola nie należy do szkół istniejących blad = int('x') # oddzialy = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'w', 'y', 'z'] # Określa istniejące oddzialy if K[1] not in oddzialy: # Wywołuje błąd jeżeli oddział nie należy do oddziałów istniejących blad = int('x') # def SprawdzNazwisko(N): for a in N: for x in range(0,10): # if a.find(str(x)) != -1: # Wywoluje blad jeżeli nazwisko zawiera liczbę blad = int('x') # def SprawdzImie(I): for x in range(0,10): # if I.find(str(x)) != -1: # Wywoluje blad jeżeli imie zawiera liczbę blad = int('x') # def SprawdzLogin(L, CzyUczen): if CzyUczen and L[-1] != 'u': # Wywoluje blad jeżeli login ucznia nie zawiera na końcu 'u' blad = int('x') # if CzyUczen: # blad = int(L[:-1]) # Wywoluje blad jeżeli login (-'u' dla ucznia) nie jest liczbą else: # blad = int(L) # def przetworz(dane): dane = dane.split('\n\n') # dzielenie danych na pojedyńcze osoby przetworzone = [] # tworzenie kontenera na przetworzone dane for osoba in dane: # try: # x = int(osoba[0]) # except ValueError: # Sprawdza czy osoba jest nauczycielem czy uczniem CzyUczen = False # else: # CzyUczen = True # # Dla uczniów if CzyUczen: K = osoba.split(', ')[0].split(' ')[:2] K = K[0] + ' ' + K[1] N = osoba.split(', ')[0].split(' ')[2:] I = osoba.split(', ')[1].split(' ')[0] L = osoba.split(', ')[1].split(' ')[2] # Sprawdzenie poprawności SprawdzKlasa(K) SprawdzNazwisko(N) SprawdzImie(I) SprawdzLogin(L, CzyUczen) dane = [K, N, I, L, CzyUczen] przetworzone.append(dane) # Dla nauczycieli else: N = osoba.split(', ')[0].split(' ') I = osoba.split(', ')[1].split(' ')[-4] L = osoba.split(', ')[1].split(' ')[-2] # Sprawdzenie poprawnosci SprawdzNazwisko(N) SprawdzImie(I) SprawdzLogin(L, CzyUczen) dane = [N, I, L, CzyUczen] przetworzone.append(dane) return przetworzone # Legenda do części dokumentacji poniżej: # X - Dane nieznaczące # Q - Pusta linia # Format danych dla uczniów: # , # # Przykład: # 1a BS Nowak, Adam 1234567u # # Format danych dla nauczycieli: # , # # Przykład: # Nowak, Adam 1234567 # # Inne: # - skrypt akceptuje prefix 'ks.', nieuwzględnia go w przetwarzaniu # - skrypt akceptuje nazwiska holenderskie (typu 'van X', 'van der X' itp.) i uwzględnia je w przetwarzaniu # - skrypt nie akceptuje nazwisk złożonych (np. Nowak-Kowalska) # - skrypt wymaga kodowania ANSI