Filedialog tkinter modifier mot. - Page 2

Résolu
Précédent
  • 1
  • 2
  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    if ([2] in lignes)


    tu es sur que la ligne contient [2] ????

    Et je t'ai dis dans mon message précédent que supprimer une ligne, c'est tout simplement ne pas la recopier dans tempo, donc ne pas faire
    fo.write(lignes)


    j'ai fait ce cis -> j'ai fait ceci
    0
    1. mister431 Messages postés 58 Statut Membre
       
      Je vois se que tu veut dire ^^ mais vraiment je ne vois pas du tout comment faire desoler ^^"
      es ce que tu peut donner un exemple ?
      0
    2. mister431 Messages postés 58 Statut Membre
       
      nan la ligne ne contient pas [2] je veut juste supprimer la numéro 3 (car la ligne 1 = 0 2= 1 etc...)
      0
    3. mister431 Messages postés 58 Statut Membre
       
      je viens de comprend j'ai ceci :

      cela supprime bien ma ligne numéro deux mais le problème cela me supprime aussi tout le reste

      exemple :

      ENTETE
      fraise
      papa
      mama

      sa devient :

      TI
      (le reste supprimer)

      def ZRC():
          mon_fichier = askopenfilename(initialdir ="C:/Phil/dev/python",filetypes =(("Text File", "*.txt"),("All Files","*.*")),title = "Selectionner fichier txt")
      
          fi = open(mon_fichier, 'r')
          fo = open('tempo.txt','w')
      
          for lignes in fi:
              if ('[ENTETE]' in lignes):  lignes = lignes.replace('[ENTETE]', 'TI')
              if ("TYPE = LIVRAISON" in lignes): lignes = lignes.replace("TYPE = LIVRAISON", "Reception")
              if ("NO BDL =" in lignes): lignes = lignes.replace("NO BDL =", "Z")
              if ("DAT BDL" in lignes): lignes = lignes.replace("DAT BDL" , "ZRC")
              if("DAT LIV ="in lignes): lignes = lignes.replace("DAT LIV =", " ")
              if("[LIGNES]"in lignes): lignes = lignes.replace("[LIGNES]", "LI;ARTICLE")
              if("REF FOU"in lignes): lignes = lignes.replace("REF FOU", "BRA")
              if("QTE ="in lignes): lignes = lignes.replace("QTE =", " ")
              if("PA BRUT"in lignes): lignes = lignes.replace("PA BRUT", " ")
              if("REMISE"in lignes): lignes = lignes.replace("REMISE", " ")
              if("PV TTC"in lignes): lignes = lignes.replace("PV TTC", " ")
              if("TVA"in lignes): lignes = lignes.replace("TVA", " ")
              if("LIBELLE ="in lignes): lignes = lignes.replace("LIBELLE =", "A01D;")
              if("GENCOD = "in lignes): lignes = lignes.replace("GENCOD = ", "FAUX")
              ligness = fi.readlines()
              ligness[2] = " .\n"
      
      0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour,

    "nan la ligne ne contient pas [2]" : c'est pas nan, c'est non...
    ben alors si elle ne contient pas [2], pourquoi testes-tu son contenu :
    if ([2] in lignes):


    for lignes in fi:

    ici, la variable s'appelle lignes

    ligness = fi.readlines()

    ici, la variable s'appelle ligness (avec 2 s) ?

    de plus tu n'as pas vraiment compris la mécanique:
    avec la boucle for, on lit ligne par ligne
    avec readlines, on lit tout le contenu du fichier
    et en plus, tu mets ça dans la boucle for qui est déjà en train de lire : quel cirque !

    Et ça, ca fait quoi : ??????
    ligness[2] = " .\n"


    Moi, pour faire simple, je laisserais la fonction ZRC comme elle est (remplacement de texte)
    ensuite, j'appellerais une autre fonction pour supprimer les lignes

    Admettons que l'on veuille supprimer les lignes 2 et 3
    même mécanique que ZRC:
    on ouvre les fichiers tempo et mon_fichier
    on lit avec une boucle for
    dans la boucle on met un compteur pour compter les lignes
    et si le compteur=2 ou compteur = 3, on ne l'écrit pas dans tempo
    0
    1. mister431 Messages postés 58 Statut Membre
       
      Bonjour, de base :

      ligness[2] = " .\n"


      devait supprimer ma ligne numéro 3 mais malheureusement elle supprime tout sauf TI sans aucune explication mais sans cette commande tout fonctionne.

      enfaite des fois j'ai l'impression aussi vous ne comprenez pas se que je recherche
      avec ZRC je veut remplacer des mot et supprimer une ligne qui met sert pas.

      exemple :

      ENTETE
      Livraison = domicile
      fjsdgfnig@gmail.com
      toto = 13
      argent : 13euro

      la entete devient TI etc...

      mais par exemple je veut que @gmail disparait car elle apparait tout le temps a la même ligne du texte mais je peut pas faire .replace sa serait tricher il faut que je la supprime et laisser le reste. voila
      0
    2. mister431 Messages postés 58 Statut Membre
       
      Bon merci de votre aide je vais conclure se post car il a été résolu en partie je vais refaire un post merci pour votre aide
      0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Il faut absolument que tu fasse comme je te l'indique, ca marche à coup sur, je l'ai testé

    abandonne tes ligness[2] = " .\n"
    et tes doubles lectures

    moi, j'ai fait une fonction remplacer(), puis une fonction supprimer(), je les appelle l'une apres l'autre

    et ca marche bien
    0
Précédent
  • 1
  • 2