26 lines
693 B
Python
26 lines
693 B
Python
#!/usr/bin/env python3
|
|
"""Word frequency counter - counts and sorts unique words in text files."""
|
|
import sys
|
|
from collections import Counter
|
|
import re
|
|
|
|
def count_words(text):
|
|
"""Extract words and count frequencies."""
|
|
words = re.findall(r'\b[a-zA-Z]+\'?[a-zA-Z]*\b', text.lower())
|
|
return Counter(words)
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print("Usage: wordfreq.py <file>", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
with open(sys.argv[1], 'r') as f:
|
|
text = f.read()
|
|
|
|
counts = count_words(text)
|
|
|
|
for word, count in sorted(counts.items(), key=lambda x: (-x[1], x[0])):
|
|
print(f"{count:6d} {word}")
|
|
|
|
if __name__ == '__main__':
|
|
main() |