41 lines
998 B
Python
41 lines
998 B
Python
# coding: utf-8
|
|
|
|
from collections import Counter
|
|
from argparse import ArgumentParser
|
|
|
|
|
|
def checkArguments():
|
|
args = ArgumentParser(description='Cryptanalyst')
|
|
args.add_argument('-f', '--filename', help='Text to analyze')
|
|
args.add_argument('-b', '--bigram', help='Get bigram', action="store_true")
|
|
args.add_argument('-t', '--trigram', help='Get trigram', action="store_true")
|
|
return args.parse_args()
|
|
|
|
def readFile(filename):
|
|
"""
|
|
This read the file passed in argument and return the data of it
|
|
"""
|
|
text = str()
|
|
with open(filename, 'r') as f:
|
|
data = f.readlines()
|
|
|
|
for entry in data:
|
|
text += entry
|
|
|
|
return text
|
|
|
|
def getLetters(text, pos):
|
|
# return Counter(text[idx : idx + pos] for idx in range(len(text) - 1))
|
|
return Counter([text[idx: idx + pos] for idx in range(len(text) - 1)])
|
|
|
|
if __name__ == "__main__":
|
|
args = checkArguments()
|
|
text = readFile(args.filename)
|
|
|
|
if args.bigram:
|
|
data = getLetters(text, 2)
|
|
if args.trigram:
|
|
data = getLetters(text, 3)
|
|
|
|
print(data)
|