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 :

Difficulté pour récupérer des données dans un .txt [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut Difficulté pour récupérer des données dans un .txt
    Bonjour !

    J'ai un problème pour récupérer des données dans un .txt. Un logiciel de simulation me permet de voir les caractéristiques d'un proton ayant traversé de la matière et exporte ces données dans un .txt de la forme suivante : (je ne peux pas modifier la manière dont le logiciel exporte les données)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Plusieurs lignes de texte qui décrit les colonnes 
    bla bla
    bla bla
    bla bla
     
     Ion     Atom   Energy          Depth       Lateral-Position        Atom Direction      
     Numb Numb    (eV)             X(A)        Y(A)       Z(A)      Cos(X)  Cos(Y) Cos(Z) 
    T    1    1   ,1923876E+08   5000022E-01 -,3546E+04  ,2804E+03   ,9999656 -,0082181  ,0011361
    T    2    1   ,1916511E+08   5000022E-01  ,5368E+04  ,1542E+04   ,9996267  ,0247368  ,0116009
    T    3    1   ,1927306E+08   5000023E-01 -,2016E+04  ,8875E+03   ,9998685 -,0119370  ,0109733
    et pleins d'autres lignes du même genre
    Il me faudrait récupérer les données dans la colonne "Energy (eV)" qui contient les éléments ",192...E+08". En fait ce nombre est égal à 1.92...E+07.
    C'est là tout mon problème, le fichier ici n'est vraiment pas simple en terme de séparateurs (il y a des espaces et des virgules)... Je n'arrive pas à écrire un code qui puissent me permettre de récupérer les différentes valeurs d'énergie et à les exporter sous la forme 1.92...E+07 dans un autre fichier .txt

    Merci d'avance si vous avez une astuce !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par Mzriu Voir le message
    Merci d'avance si vous avez une astuce !
    C'est un fichier texte, donc une suite de lignes.

    La première chose à faire est de récupérer les lignes qui contiennent les données numériques, soit le nombre de lignes à sauter est connu, soit en repérant la ligne qui commence par 'Ion'.
    Ce qui fait un premier "filtre" qui récupère une liste de lignes.

    Après on s'occupe de chaque ligne.
    Il faut vous préoccuper du sens de vos données, si ' ' est un séparateur, les ',' sont peut être des '.' i.e. le séparateur des parties entières et décimales d'un nombre.
    Dans ce cas, ils ne séparent pas des champs mais en font partie...

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut
    Merci pour votre réponse. J'ai réussi à filtrer la première partie contenant le texte. J'ai donc un fichier .txt uniquement composé de ligne comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T    1  1 ,1923876E+08   5000022E-01 -,3546E+04  ,2804E+03   ,9999656 -,0082181  ,0011361
    Et c'est là que je galère... En fait j'utilise np.genfromtxt pour ouvrir ce fichier que je viens de créer et je veux créer une liste d'énergie contenant toutes mes énergies.
    J'écris alors le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        dataEn = np.genfromtxt('dataTRIM.txt') 
        energy = dataEn[:,3]
    Le soucis c'est cette virgule. Avec genfromtxt j'arrive à extraire des nombres de la forme 1.1545E+08 (un point pour séparer l'unité des décimales) par exemple. Mais là, avoir: ,192...E+08 au lieu de 0.192...E+08 ou bien 1.92...E+07 induit une erreur "nan : not a number" dans chaque élément de ma liste "energy".

    Comment puis-je procéder à partir de là ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Mzriu Voir le message
    Comment puis-je procéder à partir de là ?
    Si c'est les ',' qui vous embêtent, vous les remplacez par des '.'.

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

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par Mzriu Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [...]
     
     Ion     Atom   Energy          Depth       Lateral-Position        Atom Direction      
     Numb Numb    (eV)             X(A)        Y(A)       Z(A)      Cos(X)  Cos(Y) Cos(Z) 
    T    1    1   ,1923876E+08   5000022E-01 -,3546E+04  ,2804E+03   ,9999656 -,0082181  ,0011361
    T    2    1   ,1916511E+08   5000022E-01  ,5368E+04  ,1542E+04   ,9996267  ,0247368  ,0116009
    T    3    1   ,1927306E+08   5000023E-01 -,2016E+04  ,8875E+03   ,9998685 -,0119370  ,0109733
     
    et pleins d'autres lignes du même genre
    Il me faudrait récupérer les données dans la colonne "Energy (eV)" qui contient les éléments ",192...E+08". En fait ce nombre est égal à 1.92...E+07. [...]

    Merci d'avance si vous avez une astuce !

    Je ne crois pas que le 1 fasse partie de l'élément (ev)
         Numb Numb    (eV)             X(A)        Y(A)       Z(A)      Cos(X)  Cos(Y) Cos(Z) 
    T    1    1   ,1923876E+08   5000022E-01 -,3546E+04  ,2804E+03   ,9999656 -,0082181  ,0011361

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut
    C'est bon j'ai réussi à me débrouiller !

    Merci pour vos réponses

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Mzriu Voir le message
    C'est bon j'ai réussi à me débrouiller !
    https://sebsauvage.net/wiki/doku.php?id=csv
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/06/2017, 16h14
  2. Réponses: 8
    Dernier message: 11/06/2010, 15h11
  3. Récupérer des données dans une phrase txt
    Par sophie78 dans le forum MATLAB
    Réponses: 20
    Dernier message: 05/07/2007, 17h27
  4. Exporter et récupérer des données dans un txt
    Par Death83 dans le forum MATLAB
    Réponses: 3
    Dernier message: 26/01/2007, 15h59
  5. Réponses: 1
    Dernier message: 05/09/2006, 17h56

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