Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer la valeur exacte

Sujet résolu
Anonyme
    1 septembre 2014 à 23:36:24

    Bonjours à tous,

    J'essaye de récupérer du texte dans un fichier ligne par ligne, mais malheureusement quand j'affiche la ligne récupérer je l'obtient sous la forme : b'mot\n'
    Je ne sais pas dutout comment faire pour récupérer la valeur exacte du mot...

    Voilà le code :

    import hashlib
    
    fichier = open('fichier.txt', 'r', encoding='utf-8')
    
    for ligne in fichier:
        ligne = ligne.encode('utf-8')
        echo ligne
        # J'obtient : b'contenu_de_ligne\n'
    
    fichier.close()
    
    


    Merci beaucoup d'avance ! :)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 septembre 2014 à 8:23:07

      >>> t = b'coucou'
      >>> s = str(t, 'utf8')
      >>> s
      'coucou'
      

      ou

      >>> t = b'coucou'
      >>> s = t.decode('utf8')
      >>> s
      'coucou'
      

      voir pep 3137

      -
      Edité par Anonyme 2 septembre 2014 à 8:29:31

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        2 septembre 2014 à 11:39:54

        Je ne vois pas pourquoi tu as besoin de hashlib pour lire un fichier, il suffit de spliter le conternu du fichier:

        with open('texte.txt') as texte:
            for line in texte.read().split('\n'):
                print(line)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          2 septembre 2014 à 11:47:12

          Pourquoi pas simplement

          for line in texte:
              print(line)

          ?

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            2 septembre 2014 à 11:54:58

            Parce que les lignes sont espacées une fois de trop:

            >>> with open('pintade.txt') as pintade:
            ...     for line in pintade:
            ...         print(line)
            patate
            
            frite
            
            chips
            
            tartiflette
            
            >>> with open('pintade.txt') as pintade:
            ...     for line in pintade:
            ...         print(line, end='')
            patate
            frite
            chips
            tartiflette
            >>> 
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              2 septembre 2014 à 15:42:12

              AlphaZeta a écrit:

              Je ne vois pas pourquoi tu as besoin de hashlib pour lire un fichier, il suffit de spliter le conternu du fichier:

              with open('texte.txt') as texte:
                  for line in texte.read().split('\n'):
                      print(line)


              Tout simplement car j'utilise la fonction sha1 plus loin dans mon programme ;)

              oldProgrammer a écrit:

              >>> t = b'coucou'
              >>> s = str(t, 'utf8')
              >>> s
              'coucou'
              

              ou

              >>> t = b'coucou'
              >>> s = t.decode('utf8')
              >>> s
              'coucou'
              

              voir pep 3137

              -
              Edité par oldProgrammer il y a environ 6 heures

              Le problème est que je dois hasher la chaine en sha1 et je ne peux pas décoder un chaine avant d'hasher une chaine de caratère. Sinon j'obtient l'erreur suivante :

              TypeError: Unicode-objects must be encoded before hashing

              Du coup le hash est faussé... :( car c'est b'le_mot\n' qui est hashé et pas juste le_mot...

              Une idée ? ;)



              -
              Edité par Anonyme 2 septembre 2014 à 15:42:54

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                2 septembre 2014 à 17:57:14

                Ah non c'est bon le problème venait du retour à la ligne. J'ai réussi à l'enlever avec la fonction rstrip()

                Merci de vos réponses ! :)

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  2 septembre 2014 à 18:01:30

                  Parce que les lignes sont espacées une fois de trop:

                  Euh, ça se résoud vite quand même, je teste pas, mais

                  print(line.strip('\n'))

                  car c'est b'le_mot\n' qui est hashé et pas juste le_mot...

                  J'ai pas compris, c'est simple pourtant, tu décodes (il y a pas le caractère '\n', je vois pas où tu veux en venir) et tu hashes par la suite, montre ton code, pour voir où tu te plantes

                  EDIT:

                  Ah non c'est bon le problème venait du retour à la ligne. J'ai réussi à l'enlever avec la fonction rstrip()

                  Bah voilà...

                  -
                  Edité par Anonyme 2 septembre 2014 à 18:14:10

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Récupérer la valeur exacte

                  × 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