Partage
  • Partager sur Facebook
  • Partager sur Twitter

Découper une chaine en liste

caractère par caractère

Sujet résolu
    14 août 2010 à 6:45:39

    Bonjour,

    Je cherche une fonction python permetant de découper une chaine de caractères en liste caractère par caractère.

    Quelqu'un peut m'aider ?

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2010 à 6:50:32

      Tout simplement avec list() :
      print(list("hello world"))
      # ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
      


      Toutefois, une chaîne agit pratiquement comme une liste (exception faite qu'une chaîne n'est pas mutable).
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 août 2010 à 8:14:56

        Fayden t'as donné la réponse, mais si tu dois supprimer cet espace dans la liste,

        >>> ch='Hello World'
        >>> ch.split() # decoupe la chaine a chaque endroit ou se trouve un espace
        ['Hello', 'World']
        >>> "".join(ch.split()) # joint chaque chaine se trouvant dans la liste ['Hello', 'World']
        'HelloWorld'
        >>> list("".join(ch.split())) # Fayden l'a expliqué en ce qui concerne la fonction list
        ['H', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd']


        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2010 à 8:45:11

          Ou bien:

          chaine = "hello word"
          chaine = chaine.replace(' ', '') #Remplace les espaces par 'rien'. Il les supprime
          print(list(chaine))
          
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            14 août 2010 à 8:57:54

            ou alors :

            >>> liste=list("hello world")
            >>> liste.remove(' ')
            >>> liste
            ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']


            et le top enfin à mon goût:

            [i for i in "hello world" if i!=" "]


            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2010 à 17:08:08

              @Fayden : Merci mais je ne cherchait pas à l'afficher, c'est la réponse de realmagma et de fred1599 qui m'est utile pour l'instant

              Merci pour vos réponse.
              • Partager sur Facebook
              • Partager sur Twitter
                14 août 2010 à 17:10:04

                Je l'ai affiché simplement pour te montrer que ça marchait hein Image utilisateur
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  14 août 2010 à 17:15:04

                  Oui j'avoue que j'ai pas bien compris non plus :)

                  Que veux-tu dire par "Je ne cherchais pas à l'afficher"?

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 août 2010 à 18:15:02

                    Je voulais juste créer une variable que j'écrirai dans un fichier.

                    Je vais marquer ce sujet comme résolu.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      14 août 2010 à 18:22:27

                      Oui mais la solution de Fayden te permet de le faire aussi. Cependant si tu ne veux pas l'espace dans son résultat, nos codes, voir le tout dernier que j'ai donné, sera correct.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 août 2010 à 2:12:02

                        J'ai besoin des espaces, donc je vais utiliser la solution de Fayden
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          15 août 2010 à 10:51:13

                          Mon code fonctionnera aussi :)

                          [i for i in "Hello World!"] # ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!']




                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 août 2010 à 11:43:44

                            Citation : fred1599

                            Mon code fonctionnera aussi :)

                            [i for i in "Hello World!"] # ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!']




                            Sémantiquement, cette list comprehension est strictement équivalente à list('Hello World!') ...

                            Niveau performances, par contre, l'utilisation de list() est plus rapide...

                            Sinon, dans le genre inutilement compliqué mais tout à fait équivalent, on a aussi :
                            >>> map(lambda i: i, 'Hello World!')
                            ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!']
                            
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Zeste de Savoir, le site qui en a dans le citron !
                            Anonyme
                              15 août 2010 à 12:40:10

                              Je ne suis pas sûr, je ne l'ai pas vu dans le site officiel, si tu pouvais m'indiquer où cela se trouve :)

                              Le but 1er des comprhensions list, c'est la simplicité de lecture, pas la vitesse d'exécution, mais bon je veux bien le croire :p

                              Sinon le module array, c'est pas plus rapide?

                              import array
                              liste=array.array('c', 'Hello World!')
                              liste.tolist()
                              


                              Et puis comme on parle des listes, j'aimerais savoir ce que tu penses du module UserList

                              from UserList import UserList
                              liste=UserList("Hello World!")
                              liste.data
                              


                              Une forme avec générateur, bizarre, mais peut-être pas si mauvaise que cela

                              def gen(x):
                                  yield x
                              
                              liste=gen([i for i in "Hello World!"])
                              for j in liste: print j
                              
                              • Partager sur Facebook
                              • Partager sur Twitter
                                15 août 2010 à 21:33:16

                                Pour le générateur, il y a déjà (i for i in "Hello World !")
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Découper une chaine en liste

                                × 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