Partage
  • Partager sur Facebook
  • Partager sur Twitter

Supprime les caractères d'une chaîne

    22 décembre 2016 à 18:21:16

    Bonsoir j'ai besoin d'aide j'apprends le langage python depuis peu, je viens vous demander de l'aide pour supprimer les caractères d'une chaîne qui ne sont pas des lettres, des accents ou des espaces. Les mots doivent être laissés intact, c'est à dire que " l'eau " doit devenir " l eau " et non pas  " leau". Cette fonction admet en entrée une chaîne de caractère et renvoie une chaîne de caractères. Il faut le faire avec une fonction, voilà ce que j'ai fait pour l'instant je sais que ce n'est pas la bonne présentation mais je suis nouvelle. Ce que j'ai fait renvoie justement la chaîne de caractères sans espaces... Merci d'avance

    # Donnees : une chaine de caracteres

    def SupprChr(txt):
        L=["," , ";", ":" , "(", ")" , "-","?","!","'",".",")", "["]
        NvTxt=""
        for i in range (0,len(txt)):
            if not(txt[i] in L):
                NvTxt=NvTxt+txt[i]
        return NvTxt
    # Resultat : supprime les caracteres qui ne sont pas des lettres ou des espaces

    • Partager sur Facebook
    • Partager sur Twitter
      22 décembre 2016 à 18:58:16

      Phyleau a écrit:

      je sais que ce n'est pas la bonne présentation mais je suis nouvelle.


      Pour insérer du code sur le site, il faut utiliser le bouton </> ^^

      Ton code est presque fini ;). La condition if est exécutée si la lettre n'est pas dans L (pas très explicite comme nom :o). Il suffit donc de rajouter une condition else pour ajouter un espace si le if n'a pas été vérifié:

      if not(txt[i] in L):
          NvTxt = NvTxt + txt[i]
      else:
          NvTxt = NvTxt + " "


      En corrigeant ton code pour le rendre plus pythonique (mais en gardant la même structure):

      def suppr_chr(chn): 
          non_authorized = ",;:()-_?!'.[]{}"
          nv_chn = ""
          for lettre in chn:
              if lettre in non_authorized:
                  nv_chn += " "
              else:
                  nv_chn += lettre
          return nv_chn


      Si tu as le droit d'utiliser un module spécifique, tu peux utiliser le module string qui dispose d'une variable punctuation:

      from string import punctuation
      
      
      def suppr_chr2(chn): 
          nv_chn = ""
          for lettre in chn:
              if lettre in punctuation:
                  nv_chn += " "
              else:
                  nv_chn += lettre
          return nv_chn


      Cette variable est une simple chaîne contenant les caractères suivants '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

      -
      Edité par Olygrim 22 décembre 2016 à 19:16:35

      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        22 décembre 2016 à 19:04:25

        Super merci beaucoup pour cette aide :D!
        • Partager sur Facebook
        • Partager sur Twitter

        Supprime les caractères d'une chaîne

        × 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