Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide pour un fichier texte

    14 décembre 2015 à 0:03:29

    Bonjour,

    J' ai mon code qui me parait un peu long à cause de la liste que j' ai inséré et je veux la séparer dans un fichier texte extérieur, Pouvez-vous m' aider !

    maliste=(              
                   ("1s2     1S 0", "  0"),
                   ("1s.2s   3S 1", "  1"),
                   ("1s.2s   1S 0", "  2"),
                   ("1s.2p   3P*2", "  3"),
                   ("1s.2p   3P*1", "  4"),
                   ("1s.2p   3P*0", "  5"),
                   ("1s.2p   1P*1", "  6"),
                   ("1s.3s   3S 1", "  7"),
                   ("1s.3p   3P*1", "  8"),
                   ("1s.3p   3P*0", "  9"),
                   ("1s.3p   3P*2", " 10"),
                   ("1s.3d   3D 3", " 11"),
                   ("1s.3d   3D 2", " 12"),
                   ("1s.3d   3D 1", " 13"),
                   ("1s.3d   1D 2", " 14"),
                   ("1s.3s   1S 0", " 15"),
                   ("1s.3p   1P*1", " 16"),
                   ("1s.4s   3S 1", " 17"),
                   ("1s.4p   3P*1", " 18"),
                   ("1s.4p   3P*2", " 19"),
                   ("1s.4p   3P*0", " 20"),
                   ("1s.4s   1S 0", " 21"),
                   ("1s.4p   1P*1", " 22"),
                   ("1s.4f   3F*3", " 23"),
                   ("1s.4f   3F*4", " 24"),
                   ("1s.4f   3F*2", " 25"),
                   ("1s.4f   1F*3", " 26"),
                   ("1s.4d   3D 3", " 27"),
                   ("1s.4d   3D 2", " 28"),
                   ("1s.4d   3D 1", " 29"),
                   ("1s.4d   1D 2", " 30"),
                   ("1s.5s   3S 1", " 31"),
                   ("1s.5p   3P*2", " 32"),
                   ("1s.5p   3P*1", " 33"),
                   ("1s.5p   3P*0", " 34"),
                   ("1s.5s   1S 0", " 35"),
                   ("1s.5p   1P*1", " 36"),
                   ("1s.5f   3F*4", " 37"),
                   ("1s.5f   3F*3", " 38"),
                   ("1s.5f   3F*2", " 39"),
                   ("1s.5f   1F*3", " 40"),
                   ("1s.5g   3G 4", " 41"),
                   ("1s.5g   3G 5", " 42"),
                   ("1s.5g   3G 3", " 43"),
                   ("1s.5g   1G 4", " 44"),
                   ("1s.5d   3D 3", " 45"),
                   ("1s.5d   3D 2", " 46"),
                   ("1s.5d   3D 1", " 47"),
                   ("1s.5d   1D 2", " 48"),
                   ("1s.6s   3S 1", " 49"),
                   ("1s.6p   3P*2", " 50"),
                   ("1s.6p   3P*1", " 51"),
                   ("1s.6p   3P*0", " 52"),
                   ("1s.6s   1S 0", " 53"),
                   ("1s.6p   1P*1", " 54"),
                   ("1s.6f   3F*2", " 55"),
                   ("1s.6f   3F*3", " 56"),
                   ("1s.6f   3F*4", " 57"),
                   ("1s.6f   1F*3", " 58"),
                   ("1s.6g   3G 3", " 59"),
                   ("1s.6g   3G 4", " 60"),
                   ("1s.6g   3G 5", " 61"),
                   ("1s.6g   1G 4", " 62"),
                   ("1s.6h   3H*4", " 63"),
                   ("1s.6h   3H*5", " 64"),
                   ("1s.6h   3H*6", " 65"),
                   ("1s.6h   1H*5", " 66"),
                   ("1s.6d   3D 3", " 67"),
                   ("1s.6d   3D 2", " 68"),
                   ("1s.6d   3D 1", " 69"),
                   ("1s.6d   1D 2", " 70"),
                   
            )
    
    
    result=file("file.txt","r").read() 
    for s1,s2 in maliste: result=result.replace(s1,s2)
    
    file("file1.txt","w").write(result)


    et merci d' avance !

    • Partager sur Facebook
    • Partager sur Twitter
      14 décembre 2015 à 9:56:56

      Bonjour,

      Sais tu ouvrir un fichier et récupérer tes données ?

      • Partager sur Facebook
      • Partager sur Twitter
      http://sinclair.recreatedzxspectrum.com/index.php
        14 décembre 2015 à 10:00:22

        Il ne serait pas plus simple de faire directement un copier/coller des valeurs dans un fichier (en retirant les "", et les ())?? Ton fichier se présenterai donc comme ceci:

        1s2     1S 0,   0
        1s.2s   3S 1,   1
        1s.2s   1S 0,   2
        1s.2p   3P*2,   3
        1s.2p   3P*1,   4
        1s.2p   3P*0,   5
        1s.2p   1P*1,   6

        -
        Edité par Olygrim 14 décembre 2015 à 10:02:34

        • Partager sur Facebook
        • Partager sur Twitter
        Précepte: Le mieux est l'ennemi du bien
          14 décembre 2015 à 10:26:11

          le problème que je ne connais pas bon comment récupérer ces données dans ce fichier texte et les afficher dans une liste dans mon programme principal, je suis encore débutant ,pardon si mes questions semblent débiles !
          • Partager sur Facebook
          • Partager sur Twitter
            14 décembre 2015 à 10:44:15

            Non, tes questions ne sont pas débiles ^^.

            Pour récupérer les valeurs, il faut:

            • ouvrir le fichier en lecture
            • lire ligne par ligne le fichier
            • découper chaque ligne avec la méthode split en indiquant le séparateur
            • Et ajouter ce découpage dans une liste principale

            En admettant que ton fichier s'appelle constante.txt:

            ma_liste = []
            
            with open("constante.txt", "r") as f_obj:
                for ligne in f_obj:
                    ma_liste.append(ligne.split(","))


            Mais je pense (je n'ai pas testé) que les espaces avant et après chaque élément ne seront pas conservés.

            Sinon, tu peux de manière beaucoup plus simple faire un fichier constante.py et mettre simplement ta variable telle quelle (telle qu'affichée dans ton premier code, sans changement). Et il suffira simplement de l'importer en début de ton code principal:

            from constante import maliste


            Et ensuite, tu peux l'utiliser normalement ^^. Par contre essaie d'utiliser un nom de variable cohérent (c'est un tuple et pas une liste ;))

            -
            Edité par Olygrim 14 décembre 2015 à 10:45:15

            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien
              14 décembre 2015 à 11:13:47

              Merci beaucoup pour votre aide Olygrim
              • Partager sur Facebook
              • Partager sur Twitter
                14 décembre 2015 à 13:25:18

                Ou sinon tu faire comme ça :

                - dans le fichier (exactement la liste que tu veux) : 

                (("1s2     1S 0", "  0"),
                ("1s.2s   3S 1", "  1"),
                ("1s.2s   1S 0", "  2"),
                ...
                
                ("1s.6h   3H*5", " 64"),
                ("1s.6h   3H*6", " 65"),
                ("1s.6h   1H*5", " 66"),
                ("1s.6d   3D 3", " 67"),
                ("1s.6d   3D 2", " 68"),
                ("1s.6d   3D 1", " 69"),
                ("1s.6d   1D 2", " 70"))

                Puis dans le programme :

                f=open("fichier.txt", "r")
                contenu=f.read()    #contenu contient toute la liste, au format chaine de caractères
                f.close()
                
                maliste = eval(contenu)

                Et maintenant maliste contient la liste souhaitée.

                -
                Edité par bnwp 14 décembre 2015 à 13:27:12

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  14 décembre 2015 à 15:56:49

                  Je ne comprend pas la question, quelqu'un pourrai préciser ?

                  Est-il question de modifier le contenu d'un fichier A et d'enregistrer ces modification dans un fichier B ? Où est-il question d'enregistrer la liste des correspondances dans un fichier ?

                  • Premier cas : Ouvre tes fichiers avec leur gestionnaire de contexte (with) pour être certain qu'ils soient fermés proprement !
                  # match_list = la liste des correspondances...
                  
                  # Lire fichier A :
                  with open('A.txt') as file:
                      text = file.read()
                  
                  # Modifier le texte :
                  for old, new in match_list:
                      text = text.replace(old, new)
                  
                  # Enregistrer dans le fichier B :
                  with open('B.txt', 'w') as file:
                      file.write(text)
                  
                  • Deuxième cas: Utilise le module json
                  # match_list = la liste des correspondances...
                  
                  # Enregistrer la liste :
                  with open('match_list.json', 'w') as file:
                      json.dump(match_list, file)
                  
                  # Charger la liste :
                  with open('match_list.json') as file:
                      match_list = json.load(file)
                  

                  PS: eval est dans 99% des cas une très mauvaise idée ! Source de bugs et une grosse faille de sécurité !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 décembre 2015 à 16:31:42

                    Si j'ai bien compris, il s'agit plutôt de fragmenter un peu le code. Donc de ne pas mettre la liste dans le code principal
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Précepte: Le mieux est l'ennemi du bien

                    Aide pour un fichier texte

                    × 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