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 :

Boucler une ligne dans un fichier et fermer la boucle si mot est dans la ligne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut Boucler une ligne dans un fichier et fermer la boucle si mot est dans la ligne
    bonjour
    j'aimerais faire une boucle sur une ligne et fermer la boucle si mot est sur la ligne suivante
    exemple:

    j'aimerais répété la ligne avec le 2499 lire toutes les ligne en rajoutant 2493 entre chaque ligne et finir la copy de ligne si 2498 a la ligne suivante
    mon fichier :

    text.txt

    résultat :
    2499
    ligne
    2493
    ligne suivante
    2493
    ligne suivante
    2493
    si 2498 stopper la lecture et changer les code 4 par 1110 comme je l'es fait au début de mon code

    1er code pour modifier ok
    etoile4 en 5.py
    la je n'arrive pas a faire ma boucle sur la ligne en rajoutant 2493 a chaque ligne et finir si code 2499
    boucle d'un text3.py


    merci de votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 848
    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 848
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par amstrad6128 Voir le message
    j'aimerais faire une boucle sur une ligne et fermer la boucle si mot est sur la ligne suivante

    j'aimerais répété la ligne avec le 2499 lire toutes les ligne en rajoutant 2493 entre chaque ligne et finir la copy de ligne si 2498 a la ligne suivante
    Bonjour
    Tu ne voudrais pas nous redire tout ça en mettant les mots adéquats dans le bon ordre ? Que veut dire "faire une boucle sur une ligne" ? (surtout que boucler sur "un" truc c'est un peu idiot !!!) et "fermer la boucle" ?

    Et que veut dire aussi "avec le 2499" ? C'est quoi un "2499" ?? Un code de la police de New York ???
    Surtout que ton fichier ne contient nulle part la chaine 2499 (ni 2498 ni 2493 ni même la chaine "24" en fait)

    Je ne peux que te renvoyer sur la citation de Boileau "Avant donc que d’écrire apprenez à penser car ce qui se conçoit bien s'énonce clairement".
    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]

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut python boucler une ligne dans un fichier et fermer la boucle si mot est dans la ligne
    ok je reprend mes explication j'ai un fichier txt il fait 500ko max

    j'ai des ligne avec des balises divers " exemples: *410004+0000000000000700 42....+ ( 700 est ma balise mais sa peu etre un autre numero)
    les ligne suivante représente des points avec numéros de ligne, numéros du point "7000" angles verticale après "21.322+" angle horizontale après 22.322+ et la distance après 31.00+ hauteur avec "87..10+

    comme exemple si dessous:

    *110007+0000000000007000 21.322+0000000014985065 22.322+0000000010106353 31..00+0000000000083961 51..1.+000000000000+000 87..10+0000000000001530

    mon fichier ressemble donc a :

    410004+0000000000000700 42....+
    410005+point suivant angle horizontale .....
    410004+0000000000000600 42....+
    410005+point suivant angle horizontale .....
    410004+0000000000002499 42....+
    410005+point suivant angle horizontale .....
    410006+point suivant angle horizontale .....
    410007+point suivant angle horizontale .....
    410008+point suivant angle horizontale .....
    410009+00000000000002498 42....+
    410010+point suivant angle horizontale .....

    j'aimerais que lorsque j'ai "un code" ex: 410004+0000000000002499 42....+
    il copie cette ligne sur les lignes suivante jusqu'a rencontré une ligne avec le code 2498 pour lui indiqué la fin de la repetition

    exemple du resultat :
    410004+0000000000002499 42....+
    410005+point suivant angle horizontale .....
    410004+0000000000002499 42....+
    410006+point suivant angle horizontale .....
    410004+0000000000002493 42....+
    410007+point suivant angle horizontale .....
    410004+0000000000002493 42....+
    410008+point suivant angle horizontale .....
    410009+00000000000002493 42....+

    fin des points avec la ligne des "balises en 2493 " si "balise 2498" trouvé et modifié en 2493

    suite de lecture du fichier jusqu'à recommencer l'opération si autre "balise 2499" trouvé

    410008+point suivant angle horizontale .....
    410008+point suivant angle horizontale .....

    j'aimerais modifier les lignes qui suive une" balise 2499 "en amont les rajouter aux lignes suivantes :lignes plus ligne avec balise modifier en "2493 jusqu'à rencontrer une ligne avec une balise "2498" et modifier ce dernier en "2493
    puis continuer ma lecture de fichier ( voire exemple c plus parlant

    j'espere avoire été plus claire
    ( je suis géomètre et je rentre ces code avec mon appareil )

    merci de votre aide

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut
    trouve la ligne.py

    je détecte les lignes avec la balise " 2499 "
    mais j'arrive pas a lire les lignes suivante jusqu'à la ligne avec la balise " 2498 "

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 848
    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 848
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par amstrad6128 Voir le message
    410005+point suivant angle horizontale .....
    410004+0000000000002499 42....+
    410005+point suivant angle horizontale .....
    410006+point suivant angle horizontale .....
    410007+point suivant angle horizontale .....
    410008+point suivant angle horizontale .....
    410009+00000000000002498 42....+
    410010+point suivant angle horizontale .....

    j'aimerais que lorsque j'ai "un code" ex: 410004+0000000000002499 42....+
    il copie cette ligne sur les lignes suivante jusqu'a rencontré une ligne avec le code 2498 pour lui indiqué la fin de la repetition

    exemple du resultat :
    410004+0000000000002499 42....+
    410005+point suivant angle horizontale .....
    410004+0000000000002499 42....+
    410006+point suivant angle horizontale .....
    410004+0000000000002493 42....+
    410007+point suivant angle horizontale .....
    410004+0000000000002493 42....+
    410008+point suivant angle horizontale .....
    410009+00000000000002493 42....+
    Ok, là ça va mieux (on passera sur la formulation "il copie cette ligne sur les lignes suivantes" que j'aurais formulé par "il répète cette ligne après avoir affiché la suivante")...

    Donc un algo de ce type devrait le faire
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    with open(fichier, "r") as fp:
    	repeat=None
    	for ligne in fp:
    		print(ligne)
    		if "2499" in ligne:
    			repeat=ligne
    			continue
    		# if
    		if "2498" in ligne:
    			repeat=None
    			continue
    		# if
    		if repeat is not None: print(repeat)
    	# for
    # with
    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]

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut question sur ton code
    sa marche tu ma drôlement aidé merci si tu peu m'aider a repondre a c question merci :

    mon code modifié avec le tiens :

    tk code 4 et 93 en test hs.py
    peu tu me dire pourquoi dans mon code

    ---je n'arrive pas a changer les "2499 en "2493" et "2498" en "2493" avec la méthode .replace ?

    ---je n'arrive pas a écrire la répétition des lignes sur la suivante (ton code) dans mon f2.write(str(fp)) ou f2.write() ?

    ---si je veux faire une répétition de ligne sur la ligne suivante avec d'autre balise esque j'ai juste a recopier les if en les modifients ?

    [[[[ en resumer : j'aimerais : ]]]]

    --- changer les "2499 en "2498" ainsi que "2498 en 2493" dans la repetition des lignes sur la ligne suivante

    ---pouvoir faire mes modification sur mes balise (balise dissocier de la répétition des lignes )et les modifier, exemple : méthode .replace (si je fais cette méthode du coup j'ai des balises en double les 2499 changé en 2493 du debut et celle de fin=
    balise 4 en 1103\n1503\n2453 et balise 5 en 1113\n1513\n2463
    ---enregistrer le fichier modifier dans (f2) fichier modifier.txt



    je te remerci beaucoup pour ton aide ...et de ton temps
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 14
    Par défaut s ne marche pas ?
    test de la répétition avec plusieurs identifient différent

    test 2499 et 8999t.py

    ok mais j'ai pas encore trouver comment enregistre avec la méthode write et append pour les changer en 2493 et 8993

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/06/2017, 21h25
  2. Réponses: 3
    Dernier message: 30/05/2017, 10h59
  3. Réponses: 2
    Dernier message: 18/11/2013, 15h43
  4. lister fichiers d'un repertoire dont un mot est dans le contenu
    Par italiasky dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 22/02/2010, 17h45
  5. Réponses: 5
    Dernier message: 08/05/2006, 00h39

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