2017-10-14 4 views
-2

J'ai donc appris Python pendant quelques mois maintenant et je me demandais comment j'allais écrire un programme qui compterait le nombre de fois qu'un mot se produit dans une phrase et imprime les index.Comment calculer le nombre de fois qu'un mot apparaît dans une phrase et imprime les index? (Python)

Merci.

+1

Hey !, Bienvenue sur SO. Vous utilisez Python depuis des mois, mais avez-vous essayé de "Google" avant de créer une question? Ppl ici ne sont pas toujours prêts à aider si vous n'avez pas essayé quelque chose d'abord (de préférence avec des liens) –

+0

Je vous suggère de faire une tentative à ce sujet, et quand vous rencontrez un problème spécifique, revenez et écrivez une question spécifique à ce sujet. – khelwood

+0

Merci, oui, j'ai essayé de faire une recherche sur Google et trouvé un programme Python qui calcule le nombre de fois qu'un mot se produit dans une phrase mais il n'a pas imprimé les index. – Robbie

Répondre

-2

Question et ma réponse ont changé. Voici la dernière suggestion:

string = "wordetcetcetcetcetcetcetcword" 

import re 
find = "word" 
p = re.compile(find) 
matches = [m.start() for m in p.finditer(string)] 
print(matches) 

Retours:

[0, 25] 
+1

Bien que ce soit vrai, cela fournit des conseils génériques qui sont disponibles ailleurs (que les gens ne lisent pas). Cela n'a absolument rien à voir avec la question posée – roganjosh

+0

@roganjosh je ne suis pas d'accord. La question initiale était: Veuillez fournir un guide étape par étape pour résoudre ce problème. –

+1

Vous avez modifié un code pour obtenir une réponse. J'ai voté pour fermer. Commentaire pour clarification ou downvote et passer à autre chose. Pensez-vous que "Google this" est utile pour la postérité lorsque vous utilisez ce site pour le travail? – roganjosh

0

Il y a plusieurs façons de le faire, mais voici une solution triviale qui compte le nombre d'occurrences d'un mot, mais ne prennent pas par exemple Ponctuation compte:

from collections import Counter 
s = "This is true. This is false." 
c = Counter(s.split(' ')) 
print(c['This']) # Prints "2" 
0
def count_index(string, search_term): 
    return (search_term, 
     string.count(search_term), 
     [string.replace(search_term, '', i).index(search_term) + (len(search_term)*i) for i in range(string.count(search_term))] 
    ) 

Retours

>>> a = test.count_index("python is a very good language, i like python because python is good", "python") 
>>> a 
('python', 3, [0, 39, 54]) 

La logique est (quoique un peu bodgy) va essentiellement sur une plage des occurences du search_term sur les données string et donc indexe la mot, ajoute l'index à la liste; alors il remplace le mot par rien et ensuite pour le prochain terme il ajoute sur la quantité de caractères enlevés selon l'index actuel et la boucle fonctionne très bien.

0

Nous accueillons également les apprenants. Ce qui suit pourrait vous aider à partir; qui comprend le traitement base de la ponctuation, ainsi que le retour de cas des variations à l'indice correspondant:

import string 
# 
mask = str.maketrans('', '', string.punctuation) # Punctuation mask. 
# 
def aFunc(sentence, word): 
    words = sentence.translate(mask).split(' ') # Remove punctuation. 
    indices = [(e,w) for (e,w) in enumerate(words) if w.lower() == word.lower()] # Collect (index,word) pairs. 
    return (len(indices), indices) 

s = 'The cat fell out of the hat. Then thE cAt fell asleep against the haT=:)' 

aFunc(s, 'HAT') 
(2, [(6, 'hat'), (14, 'haT')]) 

aFunc(s, 'the') 
(4, [(0, 'The'), (5, 'the'), (8, 'thE'), (13, 'the')]) 

aFunc(s, 'Cat') 
(2, [(1, 'cat'), (9, 'cAt')])