diff options
| -rw-r--r-- | utils.py | 39 | 
1 files changed, 21 insertions, 18 deletions
| @@ -48,26 +48,29 @@ def group_courses(courses):  def parse_group(name):      # Explication de la regex      # -    # ^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$ -    # ^                                                               début de la ligne -    #  ([\w ]+?)                                                      correspond à au moins un caractère -    #           (\s*                                                  zéro, un ou plusieurs espaces -    #               (((CM)(\w))|                                      correspond à CM suivi d'une lettre ou… -    #                           ((TD)(\w)(\d))|                       … à TD suivi d’une lettre et d'un chiffre ou… -    #                                          ((TP)(\w)(\d)(\d)))    … à TP suivi d’une lettre et de deux chiffres -    #                                                             )?  groupe optionel -    #                                                               $ fin de la ligne -    group_regex = re.compile("^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$") +    # ^([\w ]+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s\(.+\))?$ +    # ^                                                                  début de la ligne +    #  ([\w ]+?)                                                         correspond à au moins un caractère +    #           \s+                                                      un ou plusieurs espaces +    #              ((CM(\w))|                                            correspond à CM suivi d'une lettre ou… +    #                        (TD(\w)(\d))|                               … à TD suivi d’une lettre et d'un chiffre ou… +    #                                     (TP(\w)(\d)(\d))               … à TP suivi d’une lettre et de deux chiffres +    #                                                     )?             groupe optionnel +    #                                                       (\s          un espace +    #                                                          \(.+\))   un ou plusieurs caractères quelconques entre parenthèses +    #                                                                 ?  groupe optionnel +    #                                                                  $ fin de la ligne +    group_regex = re.compile("^([\w ]+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s\(.+\))?$")      search = group_regex.search(name)      if search is None:          return name, None, None, None -    parts = search.groups(0) -    if parts[1] == 0: +    parts = search.groups() +    if parts[1] is None:       # Pas de groupe précis indiqué          return parts[0], None, None, None -    elif parts[4] == "CM": -        return parts[0], parts[5], None, None -    elif parts[7] == "TD": -        return parts[0], parts[8], parts[9], None -    elif parts[11] == "TP": -        return parts[0], parts[12], parts[13], parts[14] +    elif parts[2] is not None: # Groupe de CM +        return parts[0], parts[3], None, None +    elif parts[4] is not None: # Groupe de TD +        return parts[0], parts[5], parts[6], None +    elif parts[7] is not None: # Groupe de TP +        return parts[0], parts[8], parts[9], parts[10] | 
