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

MATLAB Discussion :

manipulation d'un fichier .txt


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 28
    Points : 20
    Points
    20
    Par défaut manipulation d'un fichier .txt
    bonsoir,
    j'ai un fichiet .txt sous le forma suivant

    id|age|sexe|occupation|code_postal

    1|24|M|technician|85711
    2|53|F|other|94043
    1|23|M|writer|32067
    3|30|M|programmer|06355
    4|35|F|other|37212
    je veux par exemple lire ce fichier et afficher les lignes qui ont dans la 1er colonne la valeur '1'. comment je peux faire ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 883
    Points
    52 883
    Par défaut
    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    fid = fopen('data.txt', 'rt');
     
    while 1
     
        str = fgetl(fid);
     
        if feof(fid)        
            break
        end
     
        if ~isempty(str) && str(1)=='1'
            disp(str)
        end
     
    end
     
    fclose(fid);
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    le problème c'est que tout les lignes qui commence par '1' sortent.
    1|24|M|technician|85711
    10|53|M|lawyer|90703
    11|39|F|other|30329
    12|28|F|other|06405
    13|47|M|educator|29206
    14|45|M|scientist|55106
    15|49|F|educator|97301
    16|21|M|entertainment|10309
    17|30|M|programmer|06355
    18|35|F|other|37212
    19|40|M|librarian|02138
    moi je veux exactement la valeur 1 ! par la suite je veux stocker l'age par exemple donc comment ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 883
    Points
    52 883
    Par défaut
    Remplace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ~isempty(str) && str(1)=='1'
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ~isempty(str) && strncmp(str, '1|', 2)
    Tu peux ensuite utiliser sscanf sur le contenu de str pour récupérer l'age.

    Ou plus simplement strsplit (avec '|' comme séparateur) pour séparer les champs de valeurs contenus dans str et convertir les valeurs numériques avec str2double.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup !
    pouvez vous voir ce lien et me répondre. c'est vraiment ce que je veux faire.

    http://www.developpez.net/forums/d14...b/#post8130217

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Dut Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while 1
     
        str = fgetl(fid);
     
        if feof(fid)        
            break
        end
     
        ...
     
    end
    Attention à ce genre de boucle qui a tendance à se terminer sans traiter la dernière ligne non vide.
    Préférer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while 1
     
        str = fgetl(fid);
     
        if isequal(str, -1)        
            break
        end
     
        ...
     
    end
    fgetl renvoyant -1 en cas de rencontre de la fin du fichier.
    Voir ce sujet de la FAQ C.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Février 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup !
    pouvez vous me donner une solution pour convertir mes fichiers .txt en des matrices ?

Discussions similaires

  1. manipulation de deux fichiers .txt
    Par rimie_rimie dans le forum Débuter
    Réponses: 10
    Dernier message: 16/12/2010, 06h52
  2. Manipulation d'un fichier .txt comme Bdd
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/12/2009, 12h35
  3. manipulation de fichier txt
    Par fabien29 dans le forum MATLAB
    Réponses: 3
    Dernier message: 15/10/2009, 16h58
  4. manipulation de fichier txt
    Par eozenn dans le forum VBScript
    Réponses: 18
    Dernier message: 28/03/2008, 23h06
  5. PB manipulation fichier txt en php
    Par toulonnais83 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2007, 00h23

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