def getNbr_soumissions(texte): position = -1 #Variable utilisée pour retoruver le nombre de soumissionnaires temp = "" #Variable temporaire pour garder le caractère vérifié nbr_soumissions = "" #Nombre de soumissions if texte: if texte.find(" soumissionnaires)") > -1: position = texte.find( " soumissionnaire" ) - 1 #Le mot soumissionaire est au singulier #pour les cas où il n'y en a qu'un seul temp = mid(texte, position, 1) while (mid(texte, position, 1).isnumeric() and position >= 0): #Même si la probabilité que position #devienne plus petit que 0 est presque inexistante, nbr_soumissions = temp + nbr_soumissions #on fait une vérification à cet effet quand même. position = position - 1 temp = mid(texte, position, 1) if not nbr_soumissions.isnumeric( ): #On fait une double vérification afin de s'assurer nbr_soumissions = "" #que le résultat est bien un nombre. #On réinitialiuse nbr_soumissions si ce n'est pas un nombre. return nbr_soumissions
def getNbr_soumissions(texte): position = -1 #Variable utilisée pour retoruver le nombre de soumissionnaires temp = "" #Variable temporaire pour garder le caractère vérifié nbr_soumissions = "" #Nombre de soumissions if texte: if texte.find(" soumissionnaires)") > -1: position = texte.find(" soumissionnaire") - 1 #Le mot soumissionaire est au singulier #pour les cas où il n'y en a qu'un seul temp = mid(texte, position, 1) while (mid(texte, position, 1).isnumeric() and position >= 0): #Même si la probabilité que position #devienne plus petit que 0 est presque inexistante, nbr_soumissions = temp + nbr_soumissions #on fait une vérification à cet effet quand même. position = position - 1 temp = mid(texte, position, 1) if not nbr_soumissions.isnumeric(): #On fait une double vérification afin de s'assurer nbr_soumissions = "" #que le résultat est bien un nombre. #On réinitialiuse nbr_soumissions si ce n'est pas un nombre. return nbr_soumissions
def get_titre(instance, no_dossier, texte_contrat): reponse = "" if texte_contrat: reponse = epurer_ligne(texte_contrat) if reponse.startswith("20."): if "CE" in instance: position_debut = 7 else: position_debut = 6 else: position_debut = 0 nbr_caracteres = reponse.find(no_dossier) - position_debut - 1 #En cas d'erreur pour initialiser nbr_caracteres, #on le met égal à position_debut if nbr_caracteres <= 0 or nbr_caracteres >= len(texte_contrat): nbr_caracteres = 0 reponse = mid(texte_contrat, position_debut, nbr_caracteres) reponse = epurer_ligne(reponse) return reponse
def getNo_appel_offres(texte): no_appel_offre = "" if texte: if "offres public no " in texte: debut_no_appel_offre = texte.find("offres public no") + 15 fin_no_appel_offre = texte.find(" (", debut_no_appel_offre) no_appel_offre = mid(texte, debut_no_appel_offre + 1, fin_no_appel_offre - debut_no_appel_offre) no_appel_offre = no_appel_offre.strip() elif "offres public " in texte: debut_no_appel_offre = texte.find("offres public ") + 13 fin_no_appel_offre = texte.find(" (", debut_no_appel_offre) no_appel_offre = mid(texte, debut_no_appel_offre + 1, fin_no_appel_offre - debut_no_appel_offre) no_appel_offre = no_appel_offre.strip() return no_appel_offre
def get_fournisseur(texte): reponse = "" position_debut_prefixe = -1 position_debut_suffixe = -1 prefixe_suffixe = [ ["Accorder un contrat à ", " pour "], ["Accorder des contrats à ", " pour "], ["Accorder un contrat à ", " d'une durée de "], ["Accorder un contrat à l'entreprise ", " pour les travaux de "], ["Accorder un contrat à la firme ", " pour les travaux "], ["Accorder un contrat à les ", " pour l'achat "], ["Accorder un contrat de services professionnels à ", " pour "], ["Accorder à la firme ", " un contrat de "], ["Conclure avec la firme ", "une entente-cadre "], ["Conclure 2 ententes-cadres avec ", " pour des travaux "], [ "Conclure une entente-cadre de services professionnels avec ", " pour la réalisation " ], ["Conclure avec ", " une entente-cadre "], [" de gré à gré à la ", " pour l'achat "], ["Accorder un soutien financier de ", " pour réaliser "] ] #1. Rechercher le fournisseuur à partir de la liste de référence with open( FICHIER_FOURNISSEUR, "r", encoding="utf-8", ) as f: reader = csv.reader(f, delimiter=";") for ligne in reader: temp_fournisseur = ligne[0] + " " temp_fournisseur = temp_fournisseur.strip() if temp_fournisseur in texte: reponse = temp_fournisseur #2. Le fournisseur n'a pas été trouvé dans la liste de référence # on fait alors une recherche avec les termes clés # se trouvant avant et après le nom du fournisseur if not reponse: for i in prefixe_suffixe: position_debut_prefixe = texte.find(i[0]) if position_debut_prefixe > -1: position_debut_suffixe = texte.find( i[1], position_debut_prefixe + len(i[0])) if position_debut_suffixe > -1: reponse = mid( texte, position_debut_prefixe + len(i[0]), position_debut_suffixe - position_debut_prefixe - len(i[0])) break #Enlever s'il y a une virgule après le nom #On ne fait pas un replace car il peut y avoir des virgules valides dans le nom du fournisseur if reponse: reponse = reponse.strip() #Le strip() ne semble pas fonctionner if right(reponse, 1) == ",": reponse = left(reponse, len(reponse) - 1) if right(reponse, 2) == ", ": reponse = left(reponse, len(reponse) - 2) return reponse
def get_fournisseur(texte): reponse = "" position_debut_prefixe = -1 position_debut_suffixe = -1 prefixe_suffixe = [["Accorder un contrat à ", " pour "], ["Accorder des contrat à ", " pour "], ["Accorder un contrat à ", " d'une durée de "], ["Accorder un contrat à l'entreprise ", " pour les travaux de "], ["Accorder un contrat à la firme ", " pour les travaux "], ["Accorder un contrat à les ", " pour l'achat "], ["Accorder un contrat de services professionnels à ", " pour "], ["Accorder à la firme ", " un contrat de "], ["Conclure avec la firme ", "une entente-cadre "], ["Conclure 2 ententes-cadres avec "," pour des travaux "], ["Conclure une entente-cadre de services professionnels avec ", " pour la réalisation "], [" Conclure avec ", " une entente-cadre "], [" de gré à gré à la ", " pour l'achat "], ["Accorder un soutien financier de ", " pour réaliser "] ] #1. Rechercher le fournisseuur à partir de la liste de référence with open(FICHIER_FOURNISSEUR, "r", encoding = "utf-8", ) as f: reader = csv.reader(f, delimiter = ";") for ligne in reader: temp_fournisseur = ligne[0] + " " temp_fournisseur = temp_fournisseur.strip() if temp_fournisseur in texte: reponse = temp_fournisseur #2. Le fournisseur n'a pas été trouvé dans la liste de référence # on fait alors une recherche avec les termes clés # se trouvant avant et après le nom du fournisseur if not reponse: for i in prefixe_suffixe: position_debut_prefixe = texte.find(i[0]) if position_debut_prefixe > -1: position_debut_suffixe = texte.find(i[1], position_debut_prefixe + len(i[0])) if position_debut_suffixe > -1: reponse = mid(texte, position_debut_prefixe + len(i[0]), position_debut_suffixe - position_debut_prefixe - len(i[0])) break #Enlever s'il y a une virgule après le nom #On ne fait pas un replace car il peut y avoir des virgules valides dans le nom du fournisseur if reponse: reponse = reponse.strip() #Le strip() ne semble pas fonctionner if right(reponse, 1) == ",": reponse = left(reponse, len(reponse) - 1) if right(reponse, 2) == ", ": reponse = left(reponse, len(reponse) - 2) return reponse