#26 Le 09/08/2014, à 19:56
- pingouinux
Re : [Résolu] Script à réaliser : Que pensez vous de la progression
Je viens de corriger le problème des majuscules dans les prénoms composés, et voici ce qu'on obtient avec l'exemple
Aa C Est Ici;69991;Mme De La Haute Machere Marie-Angélique;29 Rue De La Gare;01 22 33 44 55;02 33 44 55 66;68881;C Est Là;29 Rue De La Gare;68881;C Est Là;marie-angelique.de-la-haute-machere@nom-de-domaine.fr
#!/usr/bin/python3
import sys, re
re_3lignes=re.compile(';+([^\n]+?);*\n;+([^\n]+?);+\n;+\n')
# Première lettre de chaque mot en majuscule, les autres en minuscule
def capit(s) :
majus=False; ret=''
for c in ' '.join(map(str.capitalize,s.split())) :
if majus : c=c.upper(); majus=False
if c=="-" : majus=True
ret+=c
return ret
# Mise en forme du numéro de téléphone
def tel(s) :
ret='0'+s[0]
for k in range(1,len(s),2) : ret+=" %s"%s[k:k+2]
return ret
# Suppression des accents (liste à compléter éventuellement)
def no_accent(s) :
for p,r in ( ('[àâ]', 'a')
, ('[éèêë]','e')
, ('[îï]', 'i')
, ('[ôö]', 'o')
, ('[ùûü]', 'u')
) :
k=re.search(p,s)
if k : s=re.sub(k.group(0),r,s)
return s
with open(sys.argv[1],'r') as f : fic=f.read()
#print(fic);sys.exit()
while True :
k=re_3lignes.search(fic)
if(k) :
# 3 lignes regroupées en 1 seule
lig="AA %s;%s\n"%(k.group(1),k.group(2))
# Extraction des champs et modification de la casse
intit,num,nom_prenom,adrs,tel1,tel2,code_ville=map(capit,lig.split(";"))
# Traitement de nom et prénom (recherche de "rpt")
npspl=nom_prenom.split() # Découpage en mots, casse initiale
npspll=nom_prenom.lower().split() # Découpage en mots, tout en minuscule
try : rpt=npspll.index('rpt') # rpt = position du mot 'rpt' dans la liste
except ValueError : rpt=-1
nom_prenom=" ".join(npspl[:rpt]+[npspl[-1]])
nom,prenom="-".join(npspll[1:rpt]),npspll[-1]
# Mise en forme des numéros de téléphone
tel1,tel2=map(tel,(tel1,tel2))
# Traitement de code et ville
cvspl=code_ville.split()
code,ville=cvspl[0]," ".join(cvspl[1:])
# Suppression des accents dans l'adresse mail
mail=no_accent("%s.%s@nom-de-domaine.fr"%(prenom,nom))
sys.stdout.write("%s\n"%";".join((intit,num,nom_prenom,adrs,tel1,tel2,code,ville,adrs,code,ville,mail)))
fic=fic[k.end(0):]
else :
break
Édité : Simplification de la fonction capit
Dernière modification par pingouinux (Le 10/08/2014, à 06:11)
Hors ligne
#27 Le 09/08/2014, à 20:36
- soupaloignon
Re : [Résolu] Script à réaliser : Que pensez vous de la progression
Hello,
J'étais en train de tester la version précédente, et prêt à t'écrire que c'était déjà super, et que je rectifierai manuellement la majuscules dans les cas des doubles prénoms
Et hop le #26, qui règle ce problème ...
Un grand merci Pingouinux, tout est nickel maintenant
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#28 Le 09/08/2014, à 21:00
- pingouinux
Re : [Résolu] Script à réaliser : Que pensez vous de la progression
tout est nickel maintenant
Tu vas bien encore trouver un petit quelque chose…
Bonne soirée
Hors ligne
#29 Le 09/08/2014, à 21:11
- soupaloignon
Re : [Résolu] Script à réaliser : Que pensez vous de la progression
tout est nickel maintenant
Tu vas bien encore trouver un petit quelque chose…
Bonne soirée
Vraiment si tu insistes alors (Je cherche, je cherche)
Bonne soirée à toi aussi
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne