-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuniq.py
executable file
·36 lines (27 loc) · 963 Bytes
/
uniq.py
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
#!/usr/bin/env python3
import argparse
import re
from collections import Counter
from pathlib import Path
class UniqWordsNumber():
def __init__(self, file_name):
if Path(file_name).is_file():
self.file_name = file_name
else:
raise Exception("File '{}' does not exist".format(file_name))
self.counter = Counter()
def parse(self):
with open(self.file_name) as f:
for line in f:
for word in re.findall(r'\w+', line.lower()):
self.counter[word] += 1
def print_stats(self):
for word, occurrence_number in sorted(self.counter.items(), key=lambda kv: (-kv[1], kv[0])):
print("{}: {}".format(word, occurrence_number))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('file_name')
args = parser.parse_args()
u = UniqWordsNumber(args.file_name)
u.parse()
u.print_stats()