Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fichier .csv et .txt

Implementation fonctions lecture et ecriture de fichiers

Sujet résolu
    15 mars 2024 à 11:42:24

    Bonjour tout le monde,
    Je suis à la recherche d'un petit coup de pouce j'ai actuellement un projet à réaliser dans le cadre de mes études. 
    Mon niveau en python étant moyen je cherche de l'aide de la communauté Openclassroom.


    Implémenter un programme qui prendra en paramètre un ou plusieurs fichiers texte représentant les nouvelles données
    client, ainsi qu’un fichier csv représentant la table de données clients.
    Les fichiers texte peuvent être de deux types (nouveau client ou mise à jour) et présenteront toutes leurs
    données sous un format "champ :valeur" :
    — Un fichier de nouveau client devra contenir nom, prénom, adresse, date de naissance, numéro de
    téléphone, solde initial du compte.
    — Un fichier de mise à jour devra commencer par un id, puis les données modifiées, notamment les ajouts
    ou retraits du compte
    Le problème de ces fichiers est que le format de chaque champ n’est pas fixé ( Par exemple, les téléphones
    peuvent être au format 0698516584 ou 06 − 15 − 48 − 26 − 48 ou +33648489752,... Un des objectifs du
    programme est de normaliser ces données.
    Le fichier csv aura lui un format unifié :
    — Id
    — Nom : qui contiennent des chaines de caractères avec la première lettre de chaque mot en majuscule
    et le reste
    — Téléphone : au format 06 − 14 − 14 − 57 − 57
    — Date : au format JJ/M M/AAAA
    — Solde : au format décimal avec deux chiffres après la virgule
    — Adresse : au format numéro, rue, code postal, ville
    Le programme devra implémenter chaque traitement (chargement, nettoyage, ajout à la base,...) dans une
    fonction séparée pour permettre des analyses structurelles faciles.

    J'ai realisé ces fonctions pour les formats unifiés :

    ^def nomFormate(*noms):
        normaliseeNoms = []
    
        for nom in noms:
            normaliseeNom = ' '.join([part.capitalize() for part in nom.split()])
    
            normaliseeNoms.append(normaliseeNom.title())
        return normaliseeNoms
    
    
    
    def numFormate(num):
        nettoyageNum = "".join(c for c in num if c.isdigit())
    
        if nettoyageNum.startswith("+"):
            nettoyageNum = nettoyageNum[1:] 
    
        if nettoyageNum.startswith("33"):
            nettoyageNum = nettoyageNum[2:]
    
        if not nettoyageNum.startswith("0"):
            nettoyageNum = "0" + nettoyageNum
    
        normeNum = "-".join([nettoyageNum[i:i+2] for i in range(0, 10, 2)])
    
        return normeNum
    
    
    def dateFormate(date):
        date = date.replace(" ", "")
        parties = date.split("/")
        jour, mois, annee = parties[:3]
        jour = jour.zfill(2)
        mois = mois.zfill(2)
        if len(annee) == 2:
            annee = int(annee)
            if annee <= datetime.now().year % 100:
                annee += 2000
            else:
                annee += 1900
            annee = str(annee)
        return f"{jour}/{mois}/{annee}"
    
    
    def solde (solde):
        return round(solde,2)
    
    
    def adresseFormate(adresse):
        a = re.match(r"(\d+)\s([\w\s]+)\s(\d{5})\s([\w\s-]+)", adresse)
        numero = a.group(1)
        rue = a.group(2)
        codePostal = a.group(3)
        ville = a.group(4)
        adresseFormate = f"{numero}, {rue}, {codePostal}, {ville}"
        return adresseFormate
    Mais je n'arrive pas à réaliser les fonctions pour mon fichier csv et les fichiers texte.

    Dans l'attente de vos retour.

    Merci d'avance.

    Jimmy
    • Partager sur Facebook
    • Partager sur Twitter
      15 mars 2024 à 17:59:59

      qui te génère les fichiers "texte" ? pourquoi ne pas les mettre en csv (qui est un fichier texte aussi organisé en colonne) ?

      quelles fonctions te posent problèmes ? (il y a un module csv qui peut aider https://docs.python.org/3/library/csv.html )

      Sinon pour les fichiers texte tel que décrit, je les lirais ligne à ligne et transformerais celles-ci en dictionnaire {champ:valeur}, ça devrait faciliter les ajouts et mises à jour

      • Partager sur Facebook
      • Partager sur Twitter
        16 mars 2024 à 0:03:06

        Je te remercie pour ta reactivité.
        • Partager sur Facebook
        • Partager sur Twitter

        Fichier .csv et .txt

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        • Editeur
        • Markdown