1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| def getWords(txt):
words=[]
for raw_w in txt.split():
# filter ne va garder que les caractères de raw_w
# (2eme argument) qui passent le test str.isalpha (1er arg)
# le résultat est donc identique à ton code
word = filter(str.isalpha, raw_w)
if word!='': words.append(word)
return words
def wordsCounting(lst):
"""lst : liste de mots
Routine servant a compter les mots d'une liste de mots
Retourne un dictionnaire contenant les resultats"""
dico = {}
for word in lst:
if word in dico: # identique à dico.has_key(word) mais
dico[word]+=1 # ce dernier est déprécié
else: dico[word]=1
return dico
f = open('texte2.txt','r')
data = f.read()
f.close()
lst = getWords(data)
#print lst
dico = wordsCounting(lst,dico)
#print dico
f_out = open('D:/res2.txt','w')
# La ligne de code suivante convertit le dictionnaire en une liste de couples,
# pour pouvoir les trier ensuite. Le nombre d'occurrences est mis en premier
# dans le couple pour faciliter le tri sur celui-ci.
lst = [(count, word) for word, count in dico.iteritems()]
lst.sort(reverse=True)
for count, word in lst:
f_out.write('%-15s: %i'% (word,count))
f_out.close() |
Partager