IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

txt file dans une liste en fonction du "delimiteur" [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 261
    Par défaut txt file dans une liste en fonction du "delimiteur"
    Bonjour bonjour,

    Je ne sais pas trop comment formuler au mieux ma demande mais voici ma problématique... Je voudrais avoir une classe python qui me permet de lire un fichier txt et de le mettre dans une "liste" ou un tableau à plusieurs dimensions. Je ne sais encore quelle solution serait la meilleure d'où ce post.

    En soit, j'ai plus besoin d'aide fonctionnelle, pour le technique, je pourrais le réaliser après.

    En gros, mon fichier comporte pas mal de ligne, avec des données positionnées à des positions précises sur chaque ligne. Chaque ensemble de ligne caractérise une personne et cet ensemble est délimité par une ligne avec la valeur "99".
    En gros j'aurais par exemple dans file.txt :

    99
    Ma Ligne1 Personne1
    Ma Ligne2 Personne2
    99
    Ma Ligne1 Personne2
    Ma Ligne2 Personne2

    J'aimerais me retrouver avec une liste/tableau, où chaque clé/valeur serait les lignes par personnes. Comme splitter le fichier par délimiteur 99
    Du coup, j'imaginais presque (comme après je dois intervenir sur certaines de ces données) utiliser des librairies de gestions de fichiers/données tels que Panda ou Numpy ou autre.
    Mais je débite et j'aimerais d'autres avis sur quel fonctionnel vous semblerait le mieux

    Bisous bisous

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 774
    Par défaut
    Salut,

    Citation Envoyé par JeanYvette Voir le message
    J'aimerais me retrouver avec une liste/tableau, où chaque clé/valeur serait les lignes par personnes. Comme splitter le fichier par délimiteur 9
    Un fichier texte est une séquence de lignes.
    Partez de S = 99, 'ac', 'ad', 99, 'zz', 'za', 'zz', 99, 'xa', 'xb', 'xc', si vous savez transformer S en [ [ 'ac', 'ad'], [ 'zz', 'za', 'zz'], [ 'xa', 'xb', 'xc' ]]. vous savez aussi transformer le contenu de votre fichier en un tableau semblable.
    Et si vous ne savez pas, les tutos. pour apprendre les bases vous tendent les bras.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre très actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 261
    Par défaut
    Bonjour,

    Tout d'abord, merci pour la réponse.

    J'ai plus ou moins ça, via le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    S =['99','ac','ad','99','zz','za','zz','99','xa','xb','xc']
    temp = []
    tour = -1
    for item in S:
        if item == '99':
            temp.append([])
            tour = tour + 1 
        else:
            temp[tour].append(item)
    Est-ce le plus propre ? Et du coup dois-je appliquer ça sur mon fichier ?

    Merci d'avance

    Bisous bisous

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 774
    Par défaut
    Salut,

    Citation Envoyé par JeanYvette Voir le message
    Est-ce le plus propre ?
    Si çà fonctionne, c'est déjà pas si mal.

    Et du coup dois-je appliquer ça sur mon fichier ?
    C'est la même chose modulo un S = open('fichier.txt') et que le for item in S va vous retourner une fin de ligne ('\n') dans item qu'il faudra gérer (par exemple "supprimer").

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre très actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 261
    Par défaut
    Le "c'est déjà pas si mal" qui semble montrer une certaine "bof bof" de mon code

    Merci pour tes pistes. Je laisse le post ouvert cette semaine afin de voir si d'autres avis arrivent ou si j'ai des questions sur la mise en place et sur une potentielle avancée de mon code

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 774
    Par défaut
    Salut,

    Citation Envoyé par JeanYvette Voir le message
    Le "c'est déjà pas si mal" qui semble montrer une certaine "bof bof" de mon code
    Il y a plein de façons d'écrire çà... Et quand on débute on en sait trop peu pour comparer et choisir ce qui serait "mieux".
    Quand on est un peu moins débutant, on va pouvoir cacher la misère dans une fonction (par exemple creer_tableau) à qui on va passer un itérable et qui retournera le tableau.
    Puis lorsqu'on aura écrit une première mouture du code qui fonctionne, il sera temps d'aller revoir comment ont été écrites les fonctions sur lesquelles on a passé peu de temps pour les améliorer si nécessaire.

    Le vrai défaut de votre code est qu'il suppose que la liste est bien construite (commence par "99" et qu'il y a des choses entre 2 "99" successifs) alors que si le fichier a mal été construit ou que vous vous plantez sur le nom, vous allez récupérer un résultat incorrect (imaginez qu'on ne rencontre pas de 99, on va juste recopier la liste de départ, et ce ne sera pas une liste de listes...).
    Et si votre code devient plus touffu sans avoir pris ce genre de précautions, çà va être galère à détecter et à corriger car cela induira un soucis plus loin sans rapport explicite avec le contenu du fichier. Et çà c'est pas un meilleur Python qui vous en prémunira.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/02/2017, 15h45
  2. Réponses: 4
    Dernier message: 22/12/2016, 17h02
  3. [Débutant] page aspx qui passe un Txt file dans une table de BDD
    Par harghan dans le forum C#
    Réponses: 9
    Dernier message: 11/06/2014, 12h00
  4. [XL-2010] Date de début/fin dans une liste en fonction d'une période
    Par beloquinto dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/02/2014, 00h07
  5. Comment rappeler une fonction dans une liste déroulante
    Par strogos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/05/2005, 23h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo