Update scripts

This commit is contained in:
Bucchino Geoffrey 2022-07-08 16:53:22 +02:00
parent 61e8de0483
commit f95807a90f
4 changed files with 104 additions and 93 deletions

1
.gitignore vendored Normal file

@ -0,0 +1 @@
__pycache__/**

25
functions.py Normal file

@ -0,0 +1,25 @@
# coding: utf-8
from re import sub
from unidecode import unidecode
def readFile(filename):
data = None
dataFile = str()
with open(filename, 'r') as f:
data = f.readlines()
for d in data:
u = unidecode(d.lower(), 'utf-8')
dataFile += sub(r'[^a-z]', '', u)
return dataFile
def countLetters(text):
# Get number of letters
totalLetters = 0
for letter in text:
totalLetters += 1
return totalLetters

15
ic.py

@ -1,8 +1,7 @@
# coding: utf-8
from argparse import ArgumentParser
from unidecode import unidecode
from re import sub
from functions import readFile, countLetters
def checkArguments():
@ -14,18 +13,10 @@ def main():
args = checkArguments()
# Read file
dataFile = str()
with open(args.filename, 'r') as f:
data = f.readlines()
for d in data:
u = unidecode(d.lower(), 'utf-8')
dataFile += sub(r'[^a-z]', '', u)
dataFile = readFile(args.filename)
# Get number of letters
totalLetters = 0
for letter in dataFile:
totalLetters += 1
totalLetters = countLetters(dataFile)
counts = []

44
main.py

@ -3,6 +3,7 @@
from argparse import ArgumentParser
import matplotlib.pyplot as plt
from lorem import text as loremtext
from functions import readFile
def checkArguments():
@ -12,41 +13,34 @@ def checkArguments():
args.add_argument('-d', '--decrypt', help='Decrypt Caesar text', action='store_true')
return args.parse_args()
def readCipherText(filename):
"""
This read the file passed in argument and return the data of it
"""
file = []
with open(filename, 'r') as f:
data = f.readlines()
for entry in data:
file.append(entry.strip())
return file
def stats(file=None):
"""
This function get a stats of all letter occurrence in a text
"""
if file is None:
text = loremtext()
dataFile = loremtext()
else:
text = file
dataFile = file
lettersOccurence = {}
letterUpperToAscii = ord('A') # Get the ASCII code
#dataFile = str()
#for d in text:
# u = unidecode(d.lower(), 'utf-8')
# dataFile += sub(r'[^a-z]', '', u)
lettersOccurence = []
# Init our tab
for i in range (0, 26):
lettersOccurence[chr(i + letterUpperToAscii)] = 0
lettersOccurence.append(0)
for line in text:
for letter in line:
letter = letter.upper()
if letter in lettersOccurence:
lettersOccurence[letter] = lettersOccurence[letter] + 1
letterToAscii = ord('a') # Get the ASCII code
for letter in dataFile:
l = ord(letter) - letterToAscii
if l >= 0 and l <= 26:
lettersOccurence[l] += 1
x = [chr(letter + 65) for letter in range(0, 26)]
y = [lettersOccurence[tmp] for tmp in lettersOccurence]
y = [tmp for tmp in lettersOccurence]
largeur = 0.5
plt.bar(x, y, largeur)
@ -98,7 +92,7 @@ def main():
cipherFile = None
if args.filename:
cipherFile = readCipherText(args.filename)
cipherFile = readFile(args.filename)
if args.stats:
stats(cipherFile)