def main(file_name): """Fonction qui s'effectuera lorsque l'on lance ce script""" f = open(file_name, "r") content = f.read() tab_lines0 = content.split('\n') #Sépare selon les lignes tab_lines = [] for line in tab_lines0: if line != "": tab_lines.append(line) #On retire les lignes vides for i in range(0, len(tab_lines) - 1, 2): ruler = Ruler(tab_lines[i], tab_lines[i+1]) ruler.compute() d = ruler.distance top, bottom = ruler.report() print("====== Comparaison # " + str(i//2 + 1) +" - distance = " + str(d)) print(top) print(bottom) f.close()
def iter_rule(datfile: '.txt'): """ itérateur qui parcoure le fichier texte et effectue la comparaison de chaine sur les deux premières lignes qu'il trouve """ with open(datfile, 'r') as f: string1 = "" string2 = "" for line in f: if line == '' or line == ' ' or line == '\n': # on passe si la liste est vide pass elif string1 == '': # on stocke la première ligne string1 = line elif string2 == '': # on stocke la seconde ligne string2 = line ruler = Ruler(string1, string2) string1, string2 = '', '' # on vide le stockage ruler.compute() top, bottom = ruler.report() yield ruler.distance, top, bottom
import argparse # Pour récupérer le nom du fichier parser = argparse.ArgumentParser() parser.add_argument("nom_fichier", type=str, help='') args = parser.parse_args() nom = args.nom_fichier # Construction de la dataframe df = pd.read_csv(nom, sep='\t', header=None) df.head(10) # On remplace les lignes vides par des NaN pour implémenter dropna() # Attention, le skip empty lines est implémenté dans le read_csv donc ces deux lignes risquent d'être redondante df[0].replace('', np.nan, inplace=True) df.dropna(inplace=True) # On enlève la dernière ligne si le nombre de lignes n'est pas pair if len(df) % 2 != 0: df = df.drop(len(df.index)-1) for i in range(len(df)//2): ruler = Ruler(df[0][2*i], df[0][2*i+1]) ruler.compute() a = ruler.distance top, bottom = ruler.report() print(f'====== example # {i+1} - distance = {a} ') print(top) print(bottom)
import sys from ruler import Ruler DATASET = sys.argv[1] with open(DATASET, "r") as data: lines = data.readlines() l = len(lines) // 2 for i in range(l): line1 = lines[2 * i] line2 = lines[2 * i + 1] if line1[-1] == '\n': line1 = line1[0:len(line1) - 1] if line2[-1] == '\n': line2 = line1[0:len(line2) - 1] R = Ruler(line1, line2) R.compute() print(f'=========== comparaison n° {i} -- distance = {R.distance}') top, bot = R.report() print(top) print(bot)
from ruler import Ruler import argparse parser = argparse.ArgumentParser() parser.add_argument("nom_fichier", type=str, help="fichier contenant des chaines à tester") args = parser.parse_args() nom = args.nom_fichier with open('DATASET.csv', "r") as fichier: L = [] for e in fichier: L.append(e) for i in range(0, len(L) - 1, 2): a = Ruler(L[i], L[i + 1]) a.compute() top, bottom = a.report() print(f'''Example # {(i+1)//2 + 1} - distance = {a.distance} {top} {bottom}''') # LE CODE MARCHE EN TAPANT python bundle.py DATASET.csv DANS ANACONDA PROMPT
parser.add_argument("fichier", help="le nom du fichier") args = parser.parse_args() with open(args.fichier, 'r') as f: sentinelle = True n = 0 while sentinelle == True: try: b = next(f) n += 1 c = next(f) except StopIteration: sentinelle = False break try: next(f) # la ligne vide qu'il faut passer entre deux comparaisons except StopIteration: sentinelle = False # cela signifie que la dernière ligne était vide break fragment = Ruler(b, c) fragment.compute() (top, bottom) = fragment.report() print( f"====== fragment #{n} - distance = {fragment.distance} \n{top}\n{bottom}" ) print("fin de la comparaison")