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 :

Recherche mot sur 2 lignes + ajout de mot


Sujet :

Python

  1. #1
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut Recherche mot sur 2 lignes + ajout de mot
    Bonjour à tous,

    Je débute avec Python et souhaiterai avoir quelques conseils pour bien coder. Mon projet c'est :

    1- Je dois lire un fichier txt et regrouper plusieurs lignes en 1 seule ligne, mais dans un ordre

    Un exemple :
    [BALISE]
    "PRODUIT ID" 318 "FRANCE", PRODUIT_A_FRANCE" CHINE, ALLEMAGNE, TURQUIE, SUEDE
    PRODUIT ID 318
    PRODUIT_A_FRANCE
    PRODUIT_B_FRANCE
    PRODUIT_A TURQUIE
    [BALISE]

    2- L'Ordre : est que si une ligne commence par "BALISE" et le seconde ligne commence par "PRODUIT ID", alors si la troisième ligne commence par "CATÉGORIE ID" et que l'ID du second et troisième sont identique, alors je dois regrouper les mots.

    3- Le regroupement : Les produits par Pays doivent être à coter de leur pays.

    Résultat attendu
    [BALISE]
    "PRODUIT ID"; "318"; "FRANCE"; "PRODUIT_A_FRANCE, PRODUIT_B_FRANCE";"CHINE";"ALLEMAGNE"; "TURQUIE";"PRODUIT_A_TURQUIE";"SUEDE"
    [BALISE]

    Pouvez-vous me donner quelques idées ? De mon coté, j'ai cherché sur le net, mais manque un peu d'expérience

    Je vous remercie par avance.

  2. #2
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut aide
    Bonjour à tous,

    Quelqu'un peut m'aider svp, je passe beaucoup de temps sur le net, mais je n'arrive à trouve une méthode pour coder. Je ne cherche pas une réponse toute faite, mais seulement des idées pour avancer.
    Pour l'instant j'ai seulement lire un fichier txt, fermer, split, joindre. Pour le reste, je n'ai pas trop comment je pourrai m'y prendre.

    Merci d'avance pour votre générosité.

    A+

    WR

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

    Il faut commencer par lire le fichier et savoir tester si la ligne commence par (avec .startswith).
    Après c'est une gestion d'état.
    On part de 0, si la ligne commence par:
    • "BALISE" et que l'état est 0, on incrémente,
    • "PRODUIT ID" et que l'état est 1, on incrémente sinon on remet à 0,
    • "CATÉGORIE ID" et que l'état est 2, on teste les ID... et on remet à 0.

    Et si vous ne postez pas du code pour montrer comment vous vous y prenez, on ne va pas l'écrire pour vous.

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

  4. #4
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    Bonjour,

    Merci pour votre retour. Voici un début de script, pas encore terminé, j'avance doucement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    f = open("/home/user/Bureau/testpy.txt", "r")
    tab = []
    for ligne in f:
    	ln = ligne.split()
        	tab.append(ln)
    f.close()
    print tab
    Avec le script, le résultat est le suivant :
    [BALISE]["PRODUIT ID" 318 "FRANCE", PRODUIT_A_FRANCE" CHINE, ALLEMAGNE, TURQUIE, SUEDE][PRODUIT ID 318, PRODUIT_A_FRANCE][PRODUIT_B_FRANCE,PRODUIT_A TURQUIE][BALISE]

    Or je souhaiterai avoir le résultat suivant :
    [BALISE]
    ["PRODUIT ID"][ 318][ "FRANCE"][PRODUIT_A_FRANCE"] [CHINE] [ALLEMAGNE] [TURQUIE] [SUEDE]
    [PRODUIT ID 318] [PRODUIT_A_FRANCE]
    [PRODUIT_B_FRANCE]
    [PRODUIT_A TURQUIE]
    [BALISE]

    L'avantage d'avoir un mot par colonne va m'aider à insérer plus facilement. Quelqu'un peut me dire ce qu'il ne va pas dans mon script svp ?

    Sinon je crois avoir omis de vous dire que le fichier de source est un texte contenant x lignes des produits, séparé par le mot [BALISE]. Le but est de récupérer dans un fichier.csv, les données du fichier .txt et en 1 seule ligne (uniquement pour les données entre [BALISE]).

    Merci pour votre aide

  5. #5
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut Help
    Quelqu'un peut m'aider et me dire si j'ai bien commencé, svp.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par wrozi Voir le message
    Quelqu'un peut m'aider et me dire si j'ai bien commencé, svp.
    Est-ce que votre code trie les lignes qui commencent par les chaînes de caractères mentionnées dans votre premier post?

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

  7. #7
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut Help
    Bonjour à tous,

    Oui, il fait un tri. Je viens d'avancer dans le code
    Codes :
    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
    18
    19
    20
    21
    22
    23
    24
    f = open("/home/user/Bureau/testpy.txt", "r")
    for ligne in f.readlines():
     
    	ligne = ligne.rstrip('\n\r')
     
     
    	if ligne.startswith('BALISE'):
    		print RESULT
    		print RESULT_SRV
    		RESULT = ""
    		RESULT_SRV = ""
    		print "-----------------"
    		continue
     
    	else:
    		if ligne.startswith('PRODUIT_ID'):		
    			RESULT += ligne 
    			MA_LIST = RESULT.split()
    			print MA_LIST[11]
     
    		if ligne.startswith('PRODUIT_B_FRANCE'):
    			RESULT_SRV += ligne 
    			RESULT_SRV = RESULT_SRV.replace('PRODUIT_B_FRANCE',''")
    			print MA_LIST.extend(RESULT_SRV)
    Pour l'instant, j'ai traité par block. La j'essaye d'ajouter ce qui contient dans "PRODUIT_B_FRANCE" dans la ligne "PRODUIT ID" et là ça ne marche pas.
    Quelqu'un peut regarder et si besoin corriger ou me guider svp.

    Également, je pense avoir fait une erreur dans le 1er POST
    Les données sont les suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [BALISE]
    ["PRODUIT ID"][ 318][ "FRANCE"][PRODUIT_A_FRANCE"] [CHINE] [ALLEMAGNE] [TURQUIE] [SUEDE]
    [PRODUIT ID 318] 
    [PRODUIT_B_FRANCE] "LAIT", "OEUF" , "CHOCOLAT"
    [PRODUIT_A TURQUIE] "PATE", "JEAN" , "CHAUSSURES"
    [BALISE]
    ["PRODUIT ID"][ 318][ "FRANCE"][PRODUIT_A_FRANCE"] [CHINE] [ALLEMAGNE] [TURQUIE] [SUEDE]
    [PRODUIT ID 318] 
    [PRODUIT_B_FRANCE] "LAIT", "OEUF" , "CHOCOLAT"
    [PRODUIT_A TURQUIE] "PATE", "JEAN" , "CHAUSSURES"
    [BALISE]
    .....

    Résultat attendu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [BALISE]
    ["PRODUIT ID"][ 318][ "FRANCE"][PRODUIT_A_FRANCE"] "LAIT", "OEUF" , "CHOCOLAT" [CHINE] [ALLEMAGNE] [TURQUIE] "PATE", "JEAN" , "CHAUSSURES" [SUEDE]
    [BALISE]
    WR

  8. #8
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut help
    Please help me !

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par wrozi Voir le message
    La j'essaye d'ajouter ce qui contient dans "PRODUIT_B_FRANCE" dans la ligne "PRODUIT ID" et là ça ne marche pas.
    Quelqu'un peut regarder et si besoin corriger ou me guider svp.
    ligne 23, si vous avez écrit RESULT_SRV = RESULT_SRV.replace('PRODUIT_B_FRANCE',''") vous devriez avoir un message d'erreur (que vous pouvez ne pas comprendre mais qu'il serait bon de mentionner).
    Si vous n'avez pas d'erreur, c'est que vous n'avez pas posté le bon code... et auquel car, ligne suivante: print MA_LIST.extend(RESULT_SRV) ne devrait pas afficher grand chose puisque MA_LIST.extend retourne None.

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

  10. #10
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut Help
    Bonjour,

    Merci bcp pour ton retour. Je viens de voir l'erreur et réussi à corriger. Cependant j'ai une question : comment je peux concaténé un mot dans une liste.

    Exemple :
    chaine = ['PRODUIT', 'ID', '3118', 'FRANCE', '"CATEGORIE1"', '"FROMAGE"', "CHOCOLAT", "VIN"]
    chaine2 = "CONFITURE", "CHOCOLAT2", "BONBON"

    J'ai besoin d'ajouter tous les valeurs de "chaine2" dans "chaine", mais concaténé avec la valeur "CHOCOLAT"
    Resultat attendu :

    chaine = ['PRODUIT', 'ID', '3118', 'FRANCE', '"CATEGORIE1"', '"FROMAGE"', "CHOCOLAT, CONFITURE, CHOCOLAT, BONBON", "VIN"]

    Avec la fontion append() ou extend(), je n'arrive pas à faire et surtout de mettre les valeur de la chaine2 en double quotes.

    Tu as une idée à me suggérer stp ? Merci pour ton aide

    Thanks man,

    WR,

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par wrozi Voir le message
    Avec la fontion append() ou extend(), je n'arrive pas à faire et surtout de mettre les valeur de la chaine2 en double quotes.
    .append et .extend permettent d'ajouter des éléments à une liste. Ce que vous voulez faire, c'est remplacer un des éléments qui est une chaîne de caractère à partir de...
    Apprendre à jongler avec les listes et les chaînes de caractères, c'est pour çà qu'ont été écrits des "tutos"...

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

  12. #12
    Membre du Club
    Femme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut Reponse
    Bonjour,

    Je ne vous suis pas...Pouvz-vous m'expliquer un peu svp.

    Merci

    WR

  13. #13
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par wrozi Voir le message
    Je ne vous suis pas...Pouvz-vous m'expliquer un peu svp.
    Je vous suggérai d'ouvrir un tuto pour apprendre les bases sur les listes et les chaînes de caractères.

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

Discussions similaires

  1. recherche valeur sur plusieurs lignes
    Par tamtam64 dans le forum Excel
    Réponses: 3
    Dernier message: 12/07/2015, 14h42
  2. [Batch] Recherche dynamique sur les lignes d'un fichier
    Par nanooby dans le forum Scripts/Batch
    Réponses: 28
    Dernier message: 25/09/2014, 12h20
  3. Réponses: 2
    Dernier message: 01/03/2014, 14h43
  4. [phpMyAdmin] question sur une ligne à ajouter à ma base de données
    Par jsdar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/04/2007, 11h13

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