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 :

Comparaison de ligne dans un fichier texte


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut Comparaison de ligne dans un fichier texte
    Bonsoir

    Suite à mes recherche sur le forum je n'ai pas trouvé mon bonheur.
    Mon problème est le suivant :
    Je désire comparer 4 fichier texte entre eux.
    Le premier fichier A.txt contient quelques 1000 lignes
    Le second fichier B.txt (FICHIER D'EXCEPTION) contient une vingtaine de lignes
    Le Troisième fichier (FICHIER D'EXCEPTION) C pareil
    Le quatrième fichier D contient plus de 900 lignes

    Le but étant tout d'abord de comparer le fichier A au fichier B , ensuite le fichier A au fichier C et enfin les fichier A,B,C par rapport au fichier D.

    Le problème c'est que les lignes des fichiers B et C ne doivent pas apparaître dans le fichier A si jamais elles y sont il faut créer un fichier d'erreur avec la ligne que l'on retrouve dans le fichier A et B ou A et C.

    Le soucis c'est que les lignes des fichiers B et C sont pas exactement pareil que dans le fichier A.
    Par exemple fichier A : < l02c06p002v04i1 , c1_1 , c , def , p >
    et dans le fichier B : L02

    De la toutes les lignes commençant par L02 ne doivent pas être dans le fichier A. Si elles y sont je créer un fichier pour marquer qu'il en a qui existent dans le fichier A et les relever.

    Je vous joint les fichier A,B,C .
    S'il vous plaît, si vous pouviez m'aider je vous en serai infiniment reconnaissant.

    Merci encore!!!!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    Tu peux regarder cette fonction :

    Si tu trouves ma réponse utile, n'oublies pas de voter pour ce me message

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Malheureusement avec cette fonction cela ne fonctionne pas comme je veux.
    Tout d'abord car je passe par une interface GUI (J'aurai du le préciser)
    Et de plus car cette fonction prend du mot à mot et donc ce n'est pas ce dont j'ai besoin mais merci quand même.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Tu as déjà commencé à coder quelque chose?
    Tu peux regarder les fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    doc textscan % pour la lecture des fichiers 
    doc lower    % pour passer des majuscules aux minuscules
    doc strncmp  % pour la comparaison (si le critère est toujours à la même place: '< critère')
    doc strfind  % sinon

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Non malheureusement je n'ai encore pas codé grand chose car je bloque vraiment sur ce problème.

    Mais le truc c'est qu'il doit détecter vraiment à partir soit des premiers caractères soit un peu plus et donc toutes les lignes du fichier A qui commence par ces caractères.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pourrais-tu préciser ce
    Citation Envoyé par babynewton Voir le message
    un peu plus
    ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Et bien pour l'exemple je ne sait pas si tu as jeté un oeil sur le .zip et donc le fichier exception des fois il y a marqué :

    - LOA
    - L0AC003

    Ce sont 2 exemple c'est à dire qu'il doit comprendre que aucune ligne commençant par l0A dans le fichier A ne doit exister si jamais il en trouve il les marquent dans le fichier erreur.
    exemple : L0AC003 ne doit pas exister dans le fichier A car elle contient "L0A"

    Pour le deuxième exemple c'est la même chose mais cette fois il ne doit trouver aucune ligne commençant par L0BC003.

    J'espère avoir été clair et merci encore de votre aide car je bloque toujours en encore

  8. #8
    Invité
    Invité(e)
    Par défaut
    Donc je confirme bien les critères (lus dans les fichiers B et C) sont contenus dans le fichier A sous la forme:
    < critère
    Quelque soit sa longueur et case.

    Où bloques-tu exactement?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    La lecture des fichiers?
    La comparaison de tes données lues?
    ...?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Mon problème vient de la comparaison des données lues j'arrive a lire le fichier mais ensuite je ne sait pas comment faire pour le reste.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je t'ai pourtant dirigé vers une solution
    Dans une simple boucle ou CELLFUN, il te suffit d'utiliser la fonction STRNCMP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncmp(A, ['< ' lower(critere)], length(critere)+2)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    ^^ je suis désolé mais pourrai tu me développer ta boucle ou CELLFUN s'il te plait?

    Merci

  12. #12
    Invité
    Invité(e)
    Par défaut
    C'est juste pour parcourir les différents critères de tes fichiers B et C un à un.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Oui mais donc a partir de la comment je peut lui dire de les comparer?
    Désoler mais je suis un peu néophyte merci énormément de m'aider

  14. #14
    Invité
    Invité(e)
    Par défaut
    ?? Cf ligne de code au post #10 Non?
    Je ne comprends pas ta question

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    clc
    fid = fopen('planches_elac_A320_L96D_2038_1364.txt','r');
    b = textscan(fid,'%s\n');
    fclose(fid);
    strncmp(b, ['< ' lower(critere)], length(critere)+2)
    quand est ce que j'intègre le fichier B et C??

    Merci

  16. #16
    Invité
    Invité(e)
    Par défaut
    D'après la logique de nos messages, j'aurais plutôt mis:
    Citation Envoyé par babynewton Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    clc
    fid = fopen('planches_elac_A320_L96D_2038_1364.txt','rt');
    A = textscan(fid,'%s\n');
    fclose(fid);
    strncmp(A, ['< ' lower(critere)], length(critere)+2)
    Citation Envoyé par babynewton Voir le message
    quand est ce que j'intègre le fichier B et C??
    Il te faut les lire tout comme tu lis ton fichier 'planches_elac_A320_L96D_2038_1364.txt'

    [EDIT] Par contre: remplace A = textscan(fid,'%s\n'); par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = textscan(fid,'%s','delimiter','\n');
    Sinon tu ne liras que le premier caractère '<'.
    Dernière modification par Invité ; 13/02/2012 à 03h07.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    clc
    fid = fopen('planches_elac_A320_L96D_2038_1364.txt','r');
    fib = fopen('fichierB.txt','r');
    fic = fopen('fichierC.txt','r');
    A = textscan(fid,'%s','delimiter','\n');
    fclose(fid);
    strncmp(A, ['< ' lower(fid)], length(fid)+2)
    Je ne sait pas comment mis prendre pour les 2 autres fichiers je les lis ok et ensuite pour qu'il me sorte le fichier erreur??

    Merci vraiment de ton aide Winjerome

  18. #18
    Invité
    Invité(e)
    Par défaut
    Comme déjà mentionné:
    Citation Envoyé par Winjerome
    Dans une simple boucle ou CELLFUN pour parcourir les différents critères de tes fichiers B et C un à un, il te suffit d'utiliser la fonction STRNCMP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strncmp(A, ['< ' lower(critere)], length(critere)+2)
    Après avoir obtenu le contenu de tes fichiers B et C de la même façon que le fichier A

    PS: Merci d'utiliser les balises [code] pour insérer ton code Cf ceci.

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Ok donc ensuite apres avoir lu tout mes fichiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    clc
    fid = fopen('planches_elac_A320_L96D_2038_1364.txt','r');
    fib = fopen('non_simules_COM.txt','r');
    fic = fopen('non_simules_MON.txt','r');
    A = textscan(fid,'%s','delimiter','\n');
    B = textscan(fib,'%s','delimiter','\n');
    C = textscan(fic,'%s','delimiter','\n');
    fclose(fid);
    fclose(fib);
    fclose(fic);
    strncmp(A, ['< ' lower(fid)], length(fid)+2)
    strncmp(B, ['< ' lower(fib)], length(fib)+2)
    strncmp(C, ['< ' lower(fic)], length(fic)+2
    Comment savoir si il y a des équivalences?

    Merci encore et désolé d'être aussi long à la détente

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Je comprend pas où est le problème y devrai me marquer les ligne que l'on retrouve 2 fois mais il me créer un fichier vide??

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Retour a la ligne dans un fichier texte
    Par dykkent dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2006, 19h57
  2. Suppression de lignes dans un fichier texte
    Par Isa31 dans le forum Langage
    Réponses: 16
    Dernier message: 26/01/2006, 21h07
  3. Réponses: 4
    Dernier message: 16/12/2005, 18h43
  4. [Fichier] Nombre de ligne dans un fichier texte
    Par NewSer dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 10/11/2004, 17h58
  5. Réponses: 2
    Dernier message: 02/03/2004, 20h38

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