2016-05-12 4 views
0

Der Versuch, die am häufigsten verwendeten Wörter in einer Textdatei auszudrucken. Bis jetzt habe ich das Dateisystem und den Zähler und alles funktioniert, kann einfach nicht herausfinden, wie ich den bestimmten Betrag, den ich möchte, auf eine hübsche Art und Weise ausdrucken kann. Hier ist mein Code.Drucken Sie nur eine bestimmte Anzahl von Counter-Elementen mit einer anständigen Formatierung.

import re 
from collections import Counter 

def wordcount(user): 
""" 
Docstring for word count. 
""" 
file=input("Enter full file name w/ extension: ") 
num=int(input("Enter how many words you want displayed: ")) 

with open(file) as f: 
    text = f.read() 

words = re.findall(r'\w+', text) 

cap_words = [word.upper() for word in words] 

word_counts = Counter(cap_words) 


char, n = word_counts.most_common(num)[0] 
print ("WORD: %s \nOCCURENCE: %d " % (char, n) + '\n') 

Grundsätzlich möchte ich nur gehen und eine Schleife von einer Art zu machen, die die folgende auszudrucken wird ...

Zum Beispiel num = 3

So wird es die 3 auszudrucken am häufigsten verwendete Wörter und ihre Anzahl. WORD: Blah Vorkommen: 3 Wort: bloo Vorkommen: 2 Wort: blee Vorkommen: 1

Antwort

0

speichern die häufigsten Elemente und eine Schleife verwenden.

common = word_counts.most_common(num)[0] 
for i in range(3): 
    print("WORD: %s \nOCCURENCE: %d \n" % (common[i][0], common[i][1])) 
+0

Vielen Dank! Ich konnte das System aus irgendeinem Grund nicht in meinem Kopf finden. Funktioniert jetzt perfekt. – njg10

+0

Wenn jemand den Downvote erklären könnte, würde ich gerne diese Antwort verbessern (obwohl ich mir nicht sicher bin, wie - das Problem des OP bereits gelöst wurde). – TigerhawkT3

+0

Ich bin mir nicht sicher, wer abgelehnt wurde, aber da diese Antwort gültig ist - ich balanziere sie mit meiner Stimme;) – alfasin

2

Ich würde iterieren "am häufigsten" wie folgt:

most_common = word_counts.most_common(num) # removed the [0] since we're not looking only at the first item!  
for item in most_common: 
     print("WORD: {} OCCURENCE: {}".format(item[0], item[1])) 

Zwei Anmerkungen:
1. Verwenden Sie format() zu Format-Strings statt % - Sie werden mich für diesen Rat später danken!
2. Auf diese Weise können Sie beliebige Anzahl der "Top N" Ergebnisse ohne Hardcoding "3" in Ihren Code iterieren.