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
| def soundex(chaine):
# Remplacement des caractères accentués et suppression des espaces éventuels
repl = {"âäà":"a","éèêë":"e","îï":"i","ôö":"o","ûùü":"u","ç":"c"," ":""}
for mot in repl:
for lettre in mot:
chaine=chaine[0]+chaine[1:].replace(lettre,repl[mot])
chaine=chaine.upper() #Passage en majuscule
#Suppression des voyelles, w et h, en gardant la première lettre
repl = {"AEI":"","OU":"","YWH":""}
for mot in repl:
for lettre in mot:
chaine=chaine[0]+chaine[1:].replace(lettre,repl[mot])
#Remplacement des lettres restantes par le code associé
repl = {"BP":"1","CKQ":"2","DT":"3","L":"4","MN":"5","R":"6","GJ":"7","XZS":"8","FV":"9"}
for mot in repl:
for lettre in mot:
chaine=chaine[0]+chaine[1:].replace(lettre,repl[mot])
#Suppression des doublons
chaine2=chaine[0]
for n in chaine[1:]:
if chaine2[-1] != n:
chaine2 += n
#Mise en forme du code sous forme Lettre chiffre chiffre chiffre
while len(chaine2)<4:
chaine2+="0"
return chaine2[:4] |
Partager