# Dépendances from scrapy import signals # Python a une fonctionnalité regex native (re.py) mais elle a quelques limitations qui dans le cas présent rendent les regex inopérants # On importe donc regex.py (pip install regex) qui étend les capacités de re.py (notamment la tolérance aux erreurs) import regex class SplitAndSort: @classmethod # Une fonction qui sépare les adresses selon les noms de rue def splitStreet(self, value): # Le regex qui évalue là où il faut séparer la chaîne de caractère # (présence de "et / - + ainsi que" ) # (sans que ce séparateur ne soit placé près d'un groupe de numéros de la même rue) expr = r"((? 1 : # On initie une liste vide et un index correspondant au premier numéro de la rangée rawList = [] index = int(listed[0]) # Tant que l'index n'est pas supérieur au dernier numéro de la rangée... while index <= int(listed[1]): # Inscrire l'index dans la liste rawList.append(index) # augmenter l'index d'un numéro index += 1 # Un petit check pour supprimer les numéros pairs ou impairs selon la parité du premier numéro. if int(listed[0])%2 == 0 : for i in rawList : if i%2 != 0 : rawList.remove(i) if int(listed[0])%2 != 0 : for i in rawList : if i%2 == 0 : rawList.remove(i) return rawList else : return value def removeAbrog(self,value): expr = r"(?:((main\s?-?levée)|(abrog))){i<=2,d<=2,e<=3}" part = r"(?:(partiel)){i<=2,d<=2,e<=3}" if bool(regex.findall(expr, value, regex.MULTILINE | regex.IGNORECASE)): if bool(regex.findall(part, value, regex.MULTILINE | regex.IGNORECASE)): return 1 # partiellement abrogé else : return 2 # abrogé else : return 0 def typeOf(self,value): # mise en sécurité peril = r"(?:((?