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 | |
| 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.
| -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"""  | 
