-
Notifications
You must be signed in to change notification settings - Fork 0
/
pattern_adresse_courriel.py
39 lines (33 loc) · 1.73 KB
/
pattern_adresse_courriel.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from difflib import get_close_matches
import pathlib
class AdresseCourriel:
__FICHIERLISTECOURRIEL = "liste_courriel.csv"
__DOMAINE_PRINCIPAL = "@domain1.com"
__DOMAINE_SECONDAIRE = "@domain2.com"
def __init__(self) -> None:
if (pathlib.Path(__file__).parent/self.__FICHIERLISTECOURRIEL).is_file():
with open(self.__FICHIERLISTECOURRIEL, "r") as f:
self.liste_courriels = set([c.lower()[1:-1] for c in f.read().split("\n")])
else:
print("Le fichier de liste de botin de courriel n'est pas dispobible")
self.liste_courriels = set()
def pattern_adresse_courriel(self, prénom_nom:str):
try:
prénom,nom = prénom_nom.split(" ")
except ValueError:
raise ValueError(f"Nom de famille composé pour {prénom_nom}")
return f"{self.__pattern_economie(prénom, nom)};{prénom.lower()}.{nom.lower()}{self.__DOMAINE_SECONDAIRE};"
def __pattern_economie(self, prénom:str, nom:str):
essaie = f"{prénom.lower()}.{nom.lower()}{self.__DOMAINE_PRINCIPAL}"
if essaie not in self.liste_courriels:
match = get_close_matches(essaie, self.liste_courriels)
if len(match) == 0:
raise ValueError(f"Aucune adresse courriel correspondante pour {prénom} {nom}")
elif len(match) ==1:
print(f"Une seule adresse de correspondance pour {prénom} {nom}")
return match[0]
elif len(match) >1:
choix = "\n\t".join([f"{i} : {adr}" for i, adr in enumerate(match)])
return match[int(input(f"Choisir l'adresse pour {prénom} {nom}{chr(10)}{chr(9)}{choix}{chr(10)}"))]
else:
return essaie