A program that opens a text file, counts the number of words and reports the top N words ordered by the number of times they appear in the file?
Use collections.Counter
for counting words and open() for opening the file:
from collections import Counter
def main():
#use open() for opening file.
#Always use `with` statement as it'll automatically close the file for you.
with open(r'C:\Data\test.txt') as f:
#create a list of all words fetched from the file using a list comprehension
words = [word for line in f for word in line.split()]
print "The total word count is:", len(words)
#now use collections.Counter
c = Counter(words)
for word, count in c.most_common():
print word, count
main()
collections.Counter
example:
>>> from collections import Counter
>>> c = Counter('aaaaabbbdddeeegggg')
Counter.most_common returns words in sorted order based on their count:
>>> for word, count in c.most_common():
... print word,count
...
a 5
g 4
b 3
e 3
d 3