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

C# Discussion :

Traitement de texte csv : fusion des lignes contenant des doublons a certain endroit


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Traitement de texte csv : fusion des lignes contenant des doublons a certain endroit
    Bonjour à tous,

    Je me tourne vers vous car je ne parviens pas a trouver une solution a mon probleme.

    A partir d'un fichier csv, je souhaite fusionner les lignes contenant certains doublons en laissant les doublons et en fusionnant les differences.

    Ex fichier csv :
    description1;nom1|nom2|nom3;type1;eval1;valeur1
    description2;nom1|nom2|nom3;type1;eval1;valeur2
    description2;nom1|nom2|nom3;type1;eval1;valeur3

    Mon algo simplifié pour le moment etait :
    For i = 1 i< lines.length (avec lines = string[] contenant chacune des lignes)

    for j =1 j<i

    Si Nom[i] == nom [j] && type[i] == type[j] && eval[i] == eval[j] && valeur[i] != valeur[j]
    alors je fusionne description[i] avec description[j] et valeur[i] avec valeur[j]
    et j'ajoute la ligne a la place de la ligne [j-1] dans un tableaufiltré

    Sinon si d'autre teste du meme type
    meme action

    Sinon si j= i-1 on ajoute la ligne [i-2] dans le tableaufiltré

    Le probleme est que je ne traite que un seul doublon donc si un doublon arrive apres il ne se fait pas par rapport a ceux trouvé avant.
    resultat :

    description1|description2;nom1|nom2|nom3;type1;eval1;valeur1|valeur2
    description2;nom1|nom2|nom3;type1;eval1;valeur2|valeur3

    Resultat voulu :
    description1|description2;nom1|nom2|nom3;type1;eval1;valeur1|valeur2|valeur3

    Si quelqu'un a une idée, une piste, je suis preneur.
    La fusion de donnée n'est pas le probleme c'est surtout l'algo pour parcourir le fichier. Je pensais a mettre dans un tableau les binomes i et j des lignes a traité et a la fin des 2 boucles faire une boucle sur les binomes pour faire les differents traitement.

    Merci d'avance pour ceux que ca intéresse.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    bonjour

    tu crées un dictionnaire et la clé du dictionnaire sera le nom de la description.

    ensuite, dans ton algorithme, tu regardes si ton dictionnaire contient la clé correspondant à la ligne en cours de traitement,
    si c'est le cas, tu gères ton doublon, sinon, tu ajoutes dans ton dictionnaire la nouvelle clé avec les données qui vont bien.

    Donc, tu auras un dictionnaire genre : Dictionary<string, ce que tu veux>

    (je dis ce que tu veux pour le type car je ne sais pas comment tu veux stocker les informations).

    Cette idée me semble la plus simple à mettre en oeuvre par rapport à ton besoin, contrainte !!!

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton aide.

    Je suis d'accord avec toi pour le dico ca sera mieux qu'un tableau avec les indices.

    Comme tu l'as dit, je vais créer un dico et si la clef est dans le dico alors je fusionne mes données et j ajoute dans le tableaufiltré sinon j'ajoute au dico

    Par contre, quand tu dis :
    Cette idée me semble la plus simple à mettre en oeuvre par rapport à ton besoin, contrainte !!!
    Est ce que ca veut dire que tu vois une méthode plus optimiser pour faire ca? (je commence le c# donc tout conseil je suis preneur)

    Merci encore pour ta précieuse aide

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    euh non, pas d'autres idées pour faire celà.

    En tout cas, moi, pour faire celà je ferais avec le dictionnaire et basta...

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Oui, je bosse dessus et clairement ca semble le mieux et me permet d’apprendre les dico en c#

    Merci, je passe en résolu.

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

Discussions similaires

  1. [XL-2003] Supprimer des lignes contenant des cellules #N/A
    Par christoff916 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/07/2011, 15h03
  2. Réponses: 9
    Dernier message: 06/02/2009, 15h53
  3. Réponses: 8
    Dernier message: 29/04/2008, 13h58
  4. JTable contenant des JComboBox contenant des Images
    Par lex13 dans le forum Composants
    Réponses: 4
    Dernier message: 31/07/2007, 15h57
  5. Traitement des lignes [suppression des lignes vides]
    Par turbo_chess dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2007, 09h16

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