Transformer chaine de caractères Python

blood -  
 Blood -
Bonjour,
Je suis actuellement en galère avec Python. Voilà j'ai ma chaine de caractères de type x="abcdefghijkl". Et j'aurais voulu que ça devienne une liste séparée tous les 3 caractères. En gros que ça me donne x=["abc","def","ghi","jkl"]. Car avec split on ne peut séparer qu'en fonction de symboles.
Sinon autre question en relation, j'aurais voulu pour chaque groupe de 3 caractères les espacer par un symbole (en gros : abc - def - ghi - jkl). Avec la fonction for, elle prend tous les caractères dans x et applique le programme pour chaque caractère, mais je souhaiterais en gros qu'elle prenne par groupe de 3 caractères et applique le programme pour chaque groupe.
Voilà j'espère que vous avez compris.
Merci d'avance pour vos réponse

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour
    Tu fais un for
    Tu y ajoute une variable qui servira de compteur
    A chaque fois qu'il arrive à 3 tu joutes ton symbole et tu remets le compteur à 0
    0
  2. Blood
     
    Merci Jordane pour ta réponse.
    J'ai essayé un compteur avec while mais ça ne fonctionne pas. Auriez vous un exemple à me proposer svp ?
    0
    1. youki
       
      Ce que vous demandez à faire est très simple en python, cela s'effectue en utilisant les slices.

      >>> x = "abcdefghijkl"
      >>> for i in range(0, len(x), 3):
      ...   print(x[i:i+3])
      ... 
      abc
      def
      ghi
      jkl
      >>> lx = [x[i:i+3] for i in range(0, len(x), 3)]
      >>> lx
      ['abc', 'def', 'ghi', 'jkl']
      >>> ' - '.join(lx)
      'abc - def - ghi - jkl'
      0
      1. Blood > youki
         
        Merci youki c'est exactement cela que je cherchais, et j'étais parti beaucoup trop loin.
        Mais y a un truc que je comprends pas, c'est le moment où tu passes en ligne les groupes qui sont marqués en colonne. Y aurait pas un autre moyen de le faire? Avec liste ou des [ ] par exemple plutôt que de remarquer toute la ligne?
        0