Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer un chaine de caractères

Sujet résolu
    18 décembre 2011 à 11:13:41

    Bonjour à tous,
    Voici une chaine de caractères : "Le mot est : 'mot-aléatoire'"
    En sachant que le mot entre apostrophes est un mot aléatoire et que donc le nombre de caractères change, est il possible de faire un split qui prend la partie entre apostrophes ?
    Pour avoir quelque chose qui ressemble à ça :
    mon_mot_coupe = 'mot-aléatoire'
    


    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2011 à 11:46:39

      mon_mot_coupe = eval("Le mot est : 'mot-aléatoire'"[13:])
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        18 décembre 2011 à 13:30:01

        Citation : josmiley

        mon_mot_coupe = eval("Le mot est : 'mot-aléatoire'"[13:])


        Super, merci !

        Bon dimanche !
        • Partager sur Facebook
        • Partager sur Twitter
          18 décembre 2011 à 14:27:32

          Citation : josmiley

          mon_mot_coupe = eval("Le mot est : 'mot-aléatoire'"[13:])



          Ouais bof, la complexité de eval pour ça. Ceci me semble plus simple :


          >>> print "Le mot est : 'mot-aléatoire'"[14:-1]
          mot-aléatoire
          >>>
          
          • Partager sur Facebook
          • Partager sur Twitter
            18 décembre 2011 à 15:09:19

            effectivement, défois c'est tellement gros ...
            • Partager sur Facebook
            • Partager sur Twitter

            Python c'est bon, mangez-en. 

              18 décembre 2011 à 15:29:15

              Citation : josmiley

              effectivement, défois c'est tellement gros ...



              Et pour se conformer strictement à la demande du PO qui disait

              Citation : pierrot1105

              faire un split



              il y avait aussi ceci :

              >>> print "mon_mot_coupe = 'mot-aléatoire'".split("'")[1]
              mot-aléatoire
              >>>
              




              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                18 décembre 2011 à 15:47:56

                La méthode avec les regex (c'est d'actualité...)

                print(re.search("'.+'", ch).group())
                
                • Partager sur Facebook
                • Partager sur Twitter
                  18 décembre 2011 à 15:53:46

                  Citation : fred1599

                  La méthode avec les regex (c'est d'actualité...)

                  print(re.search("'.+'", ch).group())
                  



                  Pas exactement :


                  >>> import re
                  >>> print(re.search("'.+'", "mon_mot_coupe = 'mot-aléatoire'").group())
                  'mot-aléatoire'
                  >>>
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    18 décembre 2011 à 15:55:59

                    Ah ok tu parles du ch, ouais j'ai zappé :p
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 décembre 2011 à 16:40:46

                      Merci à tous, je vois que beaucoup de possibilités s'offrent à moi, il faut que je me renseigne sur certaine, car je n'ai pas très bien compris le principe de la méthode eval, et encore moins celle de la méthode regex..

                      Mais je vous remercie encore pour vos réponses !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 décembre 2011 à 19:16:24

                        Citation : fred1599

                        Ah ok tu parles du ch, ouais j'ai zappé :p



                        Non, je parlais du fait que ta regex renvoie la paire d'apostrophes alors qu'en principe elle devrait juste renvoyer le mot entre les apostrophes.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 décembre 2011 à 19:24:26

                          Citation : fred1599

                          C'est pas ce qu'il met dans son 1er post en exemple

                          Sinon il rajoute ''.join()

                          print(''.join(re.search("'.+'", ch).group()))
                          
                          Désolé, mon premier post n'était pas très clair, mais candide a raison, je voulais récupérer la partie entre apostrophes...

                          Merci à tous !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 décembre 2011 à 19:30:58

                            Citation : fred1599

                            C'est pas ce qu'il met dans son 1er post en exemple



                            Bon, effectivement c'est pas très clair puisqu'il dit :

                            Citation : pierrot1105

                            faire un split qui prend la partie entre apostrophes ?



                            Citation : pierrot1105


                            Pour avoir quelque chose qui ressemble à ça :

                            mon_mot_coupe = 'mot-aléatoire'
                            




                            Il me semble assez naturel de ne pas capturer les séparateurs (c'est ce que josmiley avait fait d'ailleurs).


                            Citation : fred1599

                            Sinon il rajoute ''.join()

                            print(''.join(re.search("'.+'", ch).group()))
                            



                            Ne change rien :

                            >>> import re
                            >>> print(''.join(re.search("'.+'", "mon_mot_coupe = 'mot-aléatoire'").group()))
                            'mot-aléatoire'
                            >>>
                            
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              18 décembre 2011 à 19:31:53

                              En même temps j'ai supprimé, car je pensais que ça ne fonctionnait pas, tu confirmes!

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 décembre 2011 à 19:36:55

                                Citation : fred1599

                                En même temps j'ai supprimé, car je pensais que ça ne fonctionnait pas, tu confirmes!



                                Avec une regex, il suffisait d'utiliser un groupe :


                                >>> import re
                                >>> print(re.search("'(.+)'", "mon_mot_coupe = 'mot-aléatoire'").group(1))
                                mot-aléatoire
                                >>>
                                
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Récupérer un chaine de caractères

                                × 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