Partage
  • Partager sur Facebook
  • Partager sur Twitter

ecrire dans un fichier avec des tuplets

Sujet résolu
    17 février 2011 à 16:09:21

    il est où le code qui ne fonctionne pas ?
    (je suis nouveau en chimie et j'aimerai changer le plomb en or)
    • Partager sur Facebook
    • Partager sur Twitter

    Python c'est bon, mangez-en. 

      17 février 2011 à 16:10:38

      Ça change absolument rien que ça soit des tuples ou pas.
      >>> L = [(1, 2), (3, 4), (5, 6)]
      >>> for (a, b) in L:
      	print(a, b)
      

      Au lieu du print tu écris dans le fichier et c'est bon.
      • Partager sur Facebook
      • Partager sur Twitter
        17 février 2011 à 16:11:46

        Citation

        for e in num3:
        num4= e[0:1]+e[1:2]
        print num4



        ben j`aarive pas a enlver les () et les ,
        il ny a pas un moyen pour parcourir les tuples
        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2011 à 16:15:34

          Tu as regardé le code que je viens de t'écrire ?
          • Partager sur Facebook
          • Partager sur Twitter
            17 février 2011 à 16:16:58

            Oui j`ai vu la j`ai a chaue fois le couple de tuple mais je voulais savoir quad jecrirais dans le fichier est ce que ca va mecrir comme dans le print?

            merci
            • Partager sur Facebook
            • Partager sur Twitter
              17 février 2011 à 16:21:34

              Bah écoute tu auras à chaque fois la première valeur du tuple dans la variable a et la deuxième dans la variable b, après tu en fais ce que tu veux...
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                17 février 2011 à 17:07:47

                Salut,

                Voilà un exemple fonctionnel:
                fichier = open('fichier.txt','w') # on ouvre le fichier en écriture
                liste = [('Aster-03546', 'C169v2-00005'), ('Aster-02416', 'C169v2-00007'), ('Aster-05984', 'C169v2-00004')]
                
                for item in liste: # pour chaque tuple de la liste
                     fichier.write("%s \t %s\n" % item) # on formate une chaine avec le contenu du tuple, et on écrit la chaîne dans un le
                
                fichier.close() # toujours bien fermer les fichiers
                


                Explications:



                À la ligne 1, on ouvre un fichier. Si le fichier n'existe pas, il sera crée...

                À la ligne 2, on fait notre liste.

                À la ligne 4, on crée une boucle «for». Cette boucle va exécuter les instructions du bloc qui la suit (ici, ce bloc est la ligne 5) pour chaque item de la liste (pour chaque tuple, donc). La variable «item» contiendra donc le toujours le tuple courant ( d'abord «('Aster-03546', 'C169v2-00005')», puis «('Aster-02416', 'C169v2-00007')», etc...).

                La ligne 5 constitue le bloc de la boucle «for», elle sera donc répétée pour chaque tuple.
                L'instruction «fichier.write("machintruc")» écrit «machintruc» dans le fichier, mais dans ce bout de code, nous lui passons le paramètre suivant:
                "%s \t %s\n" % item
                

                Cela s'appelle du formatage:
                En gros, on écrit d'abord la chaîne que l'on veut formater, puis on ajoute le signe «%s», et enfin un tuple, et python vas remplacer le premier «%s» par le premier objet de la tuple, le second «%s» par le second objet de la tuple, etc...

                Enfin, on ferme le fichier quand on à terminé...




                Pour finir, voilà d'autres exemples de formatage:
                print("Hello, %s !" % ("World")) # affichera «Hello, World !»
                
                fichier = "/tmp/acpidump.out"
                print("Erreur fatale: le fichier %s est introuvable !" % fichier) # affichera «Erreur fatale: le fichier /tmp/acpidump.out est introuvable !»
                
                ascii_art = """
                         (__) 
                         (oo) 
                   /------\/ 
                  / |    ||   
                 *  /\---/\ 
                    ~~   ~~   
                ...."%s"...
                """
                print(ascii_art % 'Have you mooed today?') 
                # affichera:
                #          (__) 
                #          (oo) 
                #    /------\/ 
                #   / |    ||   
                #  *  /\---/\ 
                #     ~~   ~~   
                # ...."Have you mooed today?"...
                
                prenom = 'Robert'
                heures = 17
                minutes = 30
                
                message = 'Salut %s, il est %d:%d !' % (prenom, heures, minutes) # la variable «message» contiendra «Salut Robert, il est 17:30 !» ...
                


                N'hésite pas à demander des précisions si tu n'as pas compris:
                Le formatage n'est pas totalement indispensable en Python, mais il est quand même extrêmement utile !
                • Partager sur Facebook
                • Partager sur Twitter
                  17 février 2011 à 18:45:34

                  Le problème de la solution de Skami 18 c'est qu'il utilise l'ancien système de formattage de chaines de caractères, (qui est déprécié).

                  En bref, tu peux aussi le faire comme ça (avec la nouvelle méthode standard):

                  liste = [('Aster-03546', 'C169v2-00005'), ('Aster-02416', 'C169v2-00007'), 
                           ('Aster-05984', 'C169v2-00004')]
                  
                  with open('monfichier.txt', 'w') as fichier:
                      fichier.write('\n'.join('{0}\t{1}'.format(a, b) for a, b in liste))
                  


                  En gros : pour chaque élément (a,b) de la liste on crée une chaine '{a}\t{b}'.
                  C'est ce à quoi correspond l'expression : ('{0}\t{1}'.format(a, b) for a, b in liste)

                  Cette expression retourne un générateur, c'est une séquence qui "décrit" une liste, sans la créer en mémoire, et qui est comprise par la méthode '\n'.join(...). Cette méthode sert à mettre bout à bout toutes les chaines de caractères contenues dans une séquence, en les séparant par un '\n' (un passage à la ligne).

                  Et tout ça, c'est passé en argument de la méthode fichier.write(...) qui écrit la chaîne obtenue dans le fichier.

                  Mission accomplie.

                  PS: ce code est très condensé. Si tu as du mal à comprendre le principe, essaye de le décortiquer et d'expérimenter avec les différentes expressions dans ta console.
                  Notamment, essaye :
                  >>> generateur = ('{0}\t{1}'.format(a, b) for a, b in liste)
                  >>> generateur
                  # constate que c'est un objet de type "generator"
                  >>> chaine = '\n'.join(generateur)
                  >>> print(chaine)
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Zeste de Savoir, le site qui en a dans le citron !

                  ecrire dans un fichier avec des tuplets

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown