Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compter occurences d'une chaîne de charactères

    25 décembre 2016 à 13:43:56

    Bonjour et Joyeux Noël avant tout, j'ai besoin de votre aide pour une fonction permettant de compter les occurrences de tous les mots d'une chaîne de caractères. Je pensais utiliser la commande pour utiliser les dictionnaires.. La fonction doit retourner une liste de mots associés à leur occurrence, je n'y arrive vraiment pas étant débutante, merci d'avance pour votre aide ! Voilà la chose ;

    # Donnees : Chaine de caracteres
    def nboccurence(txt):
        dictionnaire={}                  #Creation d'un dictionnaire vide
        for i in range(0,len(txt)):
            if dictionnaire.has_key(votremot) #Parcoure le dictionnaire
            key+=1
            else:
                key=key+1
            return key
    
    # Resultat : Compte les occurences de tous les mots d'une chaine de caractere
    # et renvoie une liste de mot associes a leurs occurences



    • Partager sur Facebook
    • Partager sur Twitter
      25 décembre 2016 à 14:52:27

      Bonjour,

      Joyeux Noël à toi aussi :). Je ne suis pas sur d'avoir bien compris ce que tu souhaitais.

      Pour ma part j'ai compris que tu voulais savoir le nombre de fois qu'un mot était employé dans une phrase.

      Si c'est bien celà je te propose mon code :

      text="ce texte est original mais ce texte est surtout un texte random"
      
      def trouverNombreOccurences(texte):
          listeMots=[]
          listeOccur=[]
          
          dictionnaire=text.split(' ')
      
          for motDico in dictionnaire :
              if motDico not in listeMots: 
                  listeMots.append(motDico)
                  listeOccur.append(1)
              else :
                  for m in range (len(listeMots)) :
                      if listeMots[m] == motDico :
                          listeOccur[m]=listeOccur[m]+1
          return listeMots,listeOccur
                          
          
      mot,occurenceDuMot=trouverNombreOccurences(text)
      print(mot)
      print(occurenceDuMot)
      

      Ce qui affichera :

      ['ce', 'texte', 'est', 'original', 'mais', 'surtout', 'un', 'random']
      [2, 3, 2, 1, 1, 1, 1, 1]

      Il y a donc 2x le mot "ce", 3x le mot "texte" etc...

      Si ce n'est pas ce que tu voulais alors je t'invite à me réexpliquer ^^



      -
      Edité par Leyme 25 décembre 2016 à 14:56:21

      • Partager sur Facebook
      • Partager sur Twitter
        25 décembre 2016 à 14:59:29

        Super merci beaucoup pour cette aide, le résultat voulu est bien celui-là :) J'ai une dernière question , si au lieu d'une chaîne de caractère c'est un texte qui est très long l'affichage est-il optimal ?
        • Partager sur Facebook
        • Partager sur Twitter
          25 décembre 2016 à 15:32:38

          Salut,

          En utilisant set et avec un dictionnaire.

          def occurences(texte):
              dic_mots = {}
              liste_mots = texte.split()
              liste_mots_sans_doublon = list(set(liste_mots))
              for mot in liste_mots_sans_doublon:
                  dic_mots[mot] = liste_mots.count(mot)
              return dic_mots
          	
          texte = "ce texte est original mais ce texte est surtout un texte random"
          print(occurences(texte))
          

          Avec set et une liste de doublons retournée.

          def occurences(texte):
              liste = []
              liste_mots = texte.split()
              liste_mots_sans_doublon = list(set(liste_mots))
              for mot in liste_mots_sans_doublon:
                  liste.append((mot, liste_mots.count(mot)))
              return liste
          	
          texte = "ce texte est original mais ce texte est surtout un texte random"
          print(occurences(texte))
          

          Mais bon il y a sûrement plus pythonesque (et je ne sais pas si le code fonctionne, je l’ai écrit à la va-vite).

          • Partager sur Facebook
          • Partager sur Twitter
          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
            25 décembre 2016 à 16:03:16

            Effectivement, j'ai fait mon code de manière très algorithmique pour que tu comprennes le concept mais le code de yo@n97one est bien meilleur.

            Surtout si tu veux t'en servir avec un texte "très long".

            J'espère au moins que mon code t'aura tout-de-même servi :D.

            Bonne continuation

            -
            Edité par Leyme 25 décembre 2016 à 16:03:50

            • Partager sur Facebook
            • Partager sur Twitter
              25 décembre 2016 à 16:04:37

              Biensûr tout est intéressant à savoir et surtout que tu as prit de ton temps, merci à vous deux :) Passez une bonne journée
              • Partager sur Facebook
              • Partager sur Twitter

              Compter occurences d'une chaîne de charactè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