Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import re
- def countLines(file="phil.txt"):
- count = sum(1 if not re.match(r"^\s*$", line) else 0 for line in open(file, 'r'))
- return count
- def countWords(file="phil.txt"):
- with open(file, 'r') as f:
- count = len(f.read().split())
- return count
- def countLetters(file="phil.txt"):
- with open(file, 'r') as f:
- count = len(re.findall(r"\w", f.read()))
- return count
- def frequency(pattern, file="phil.txt", top=7):
- unique = {}
- with open(file, 'r') as f:
- matches = re.findall(pattern, f.read().lower())
- count = len(matches)
- for word in matches:
- if word not in unique:
- unique[word] = 0
- unique[word] += 1
- output = []
- temp = sorted(unique.items(), key = lambda x: x[1], reverse=True)
- for _, val in enumerate(temp):
- percent = (val[1] / count) * 100
- output.append("'{0}': {1} | {2:.1f}%".format(val[0], val[1], percent))
- return "\n".join(output[:top])
- def wordFrequency(file="phil.txt", top=7):
- return frequency(r"\b\w+\b", file, top)
- def letterFrequency(file="phil.txt", top=7):
- return frequency(r"\w", file, top)
- def listAll(file="phil.txt", top=7):
- output = {
- "lines": countLines(file),
- "words": countWords(file),
- "letters": countLetters(file),
- "word_frequency": wordFrequency(file, top),
- "letter_frequency": letterFrequency(file, top),
- }
- return "\n".join(["{}:\n{}".format(key, val) for key, val in output.items()])
- def goodbye():
- return "Good bye!"
- def present(menu):
- output = []
- for key, val in enumerate(menu):
- output.append("{} - {}".format(key+1, val))
- return "Available choices:\n{}".format("\n".join(output))
- def main(args):
- menu = {
- "q": goodbye,
- "all": listAll,
- "lines": countLines,
- "words": countWords,
- "letters": countLetters,
- "wfreq": wordFrequency,
- "lfreq": letterFrequency,
- }
- show = present(menu)
- choice = ""
- while choice != "q":
- print(show)
- choice = input("--> ")
- if choice in menu:
- print(menu[choice]())
- if __name__ == "__main__":
- import sys
- main(sys.argv[1:])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement