Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink

Et hop le #26, qui règle ce problème ...

Un grand merci Pingouinux, tout est nickel maintenant smile


==> 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… tongue
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

pingouinux a écrit :

tout est nickel maintenant

Tu vas bien encore trouver un petit quelque chose… tongue
Bonne soirée

Vraiment si tu insistes alors big_smile (Je cherche, je cherche)

Bonne soirée à toi aussi


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne