diff options
author | Alban Gruin | 2018-04-03 00:23:32 +0200 |
---|---|---|
committer | Alban Gruin | 2018-04-03 00:26:24 +0200 |
commit | e02f3779d788679958d1dc9656babacc6bfbe238 (patch) | |
tree | bbc0e1a827654509510c18c23ded91dd94bf60e6 /utils.py | |
parent | 4c34ca333cafafec8cc63eb925de7fe712c26670 (diff) |
Correction de la regex pour parser correctement les groupes ne
possédant pas de semestre. Les tests rajoutés au commit précédent
passent donc avec succès.
Diffstat (limited to 'utils.py')
-rw-r--r-- | utils.py | 34 |
1 files changed, 18 insertions, 16 deletions
@@ -48,32 +48,34 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^(.+?)\s*(s(\d)\s+)?((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$ - # ^ début de la ligne - # (.+?) correspond à au moins un caractère - # \s* éventuellement un ou plusieurs espaces - # (s(\d)\s+)? éventuellement un s suivi d’un nombre et d’un ou plusieurs espaces - # ((CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » - # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres - # )? groupe optionnel - # (\s+ un ou plusieurs espaces - # \(.+\))? un ou pliseurs caractères entre parenthèses - # $ fin de la ligne - group_regex = re.compile(r"^(.+?)\s*(s(\d)\s+)?((CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$") + # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$ + # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$ + # ^ début de la ligne + # (.+?) correspond à au moins un caractère + # \s* éventuellement un ou plusieurs espaces + # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces + # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » + # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres + # )? groupe optionnel + # (\s+ un ou plusieurs espaces + # \(.+\))? un ou pliseurs caractères entre parenthèses + # $ fin de la ligne + group_regex = re.compile(r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\(.+\))?$") search = group_regex.search(name) if search is None: return name, None, None parts = search.groups() - # On retourne la section (parts[0]), le semestre (parts[2]) et le groupe (parts[5]) + # On retourne la section (parts[0]), le semestre (parts[2]) et le + # groupe (parts[4]) if parts[2] is not None: - return parts[0], int(parts[2]), parts[5] + return parts[0], int(parts[2]), parts[4] else: # Si jamais le semestre n’est pas présent dans la chaine parsée, # parts[2] sera à None et sa conversion vers un int va provoquer - # une erreur. - return parts[0], None, parts[5] + # une erreur. parts[4] devrait être une chaîne vide ici. + return parts[0], None, parts[4] def tz_now(): """Retourne la date et l’heure avec le bon fuseau horaire""" |