Exercice - niveau basique¶
Calcul du nombre de lignes, de mots et de caractères¶
On se propose d’écrire une moulinette qui annote un fichier avec des nombres de lignes, de mots et de caractères.
Le but de l’exercice est d’écrire une fonction comptage :
qui prenne en argument un nom de fichier d’entrée (on suppose qu’il existe) et un nom de fichier de sortie (on suppose qu’on a le droit de l’écrire) ;
le fichier d’entrée est supposé encodé en UTF-8 ;
le fichier d’entrée est laissé intact ;
pour chaque ligne en entrée, le fichier de sortie comporte une ligne qui donne le numéro de ligne, le nombre de mots (séparés par des espaces), le nombre de caractères (y compris la fin de ligne), et la ligne d’origine.
# un exemple de ce qui est attendu
from corrections.exo_comptage import exo_comptage
exo_comptage.example()# votre code
def comptage(in_filename, out_filename):
"votre code"N’oubliez pas de vérifier que vous ajoutez bien les fins de ligne, car la vérification automatique est pointilleuse (elle utilise l’opérateur ==), et rejettera votre code si vous ne produisez pas une sortie rigoureusement similaire à ce qui est attendu.
# pour vérifier votre code
# voyez aussi un peu plus bas, une cellule d'aide au debugging
exo_comptage.correction(comptage)La méthode debug applique votre fonction au premier fichier d’entrée, et affiche le résultat comme dans l’exemple ci-dessus :
# debugging
exo_comptage.debug(comptage)Votre fonction ne semble pas créer le fichier de sortie
Accès aux fichiers d’exemples¶
Vous pouvez télécharger les fichiers d’exemples :
Pour les courageux, je vous donne également “Une charogne” en ISO-8859-15, qui contient le même texte que “Une charogne”, mais encodé en Latin-9, connu aussi sous le nom ISO-8859-15.
Ce dernier fichier n’est pas à prendre en compte dans la version basique de l’exercice, mais vous pourrez vous rendre compte par vous-mêmes, au cas où cela ne serait pas clair encore pour vous, qu’il n’est pas facile d’écrire une fonction comptage qui devine l’encodage, c’est-à-dire qui fonctionne correctement avec des entrées indifféremment en Unicode ou Latin, sans que cet encodage soit passé en paramètre à comptage.
C’est d’ailleurs le propos de la bibliothèque chardet qui s’efforce de déterminer l’encodage de fichiers d’entrée, sur la base de modèles statistiques.