From d65d45acd5a498f5148b263893e0dba86ca3c693 Mon Sep 17 00:00:00 2001 From: 7404ea6678ce6fbf3a726e36f2bf2079 <7404ea6678ce6fbf3a726e36f2bf2079@app-learninglab.inria.fr> Date: Tue, 1 Oct 2024 20:50:57 +0000 Subject: [PATCH] Add work on character analysis --- module3/exo3/exercice_fr.ipynb | 52 ++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/module3/exo3/exercice_fr.ipynb b/module3/exo3/exercice_fr.ipynb index b4956d2..784cdb2 100644 --- a/module3/exo3/exercice_fr.ipynb +++ b/module3/exo3/exercice_fr.ipynb @@ -166,7 +166,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "En effet, le résultats obtenus n'est pas un objet null, valeur None python" + "En effet, le résultats obtenus n'est pas un objet null, à savoir une valeur None en python" ] }, { @@ -230,16 +230,52 @@ " isStartPersoListLine = True\n", " currentLine = fileToAnalyse.readline()\n", " \n", - " # La lecture s'est arrêtée car la ligne de début de définition\n", - " # de la liste des personnages a été rencontrée.\n", - " # Nous avons néanmoins lue la ligne suivante.\n", - " # Nous devons maintenant lire ligne par ligne,\n", + " # La lecture s'est arrêtée car la ligne de début de définition de la liste des personnages a été rencontrée.\n", + " # Nous avons néanmoins lue la ligne suivante. Nous devons maintenant lire ligne par ligne,\n", " # la liste des personnages au format suivant:\n", " # \"- NomPersonnage, lien, lien, ...\"\n", - " # Ainsi dès que la ligne ne commence plus par un tiret\n", - " # nous pouvons arrêter la lecture et le remplissage\n", + " # Ainsi dès que la ligne ne commence plus par un tiret nous pouvons arrêter la lecture et le remplissage\n", " # du dictionnaire.\n", - " " + " isAPersoLine = True\n", + " while (currentLine and isAPersoLine):\n", + " # Traitement de la ligne courante qui est obligatoirement\n", + " # une ligne listant un personnage de la pièce.\n", + " # Comme le montre l'exemple au-dessus, le nom ainsi que\n", + " # les différents types de liens sont séparés par une virgule.\n", + " parts = currentLine.split(',')\n", + " # La ligne au-dessus crée une liste dont chaque élément\n", + " # est séparé par des virgules\n", + " # typiquement \"tata, titi, toto\".split(',') --> ['tata', ' titi', ' toto']\n", + " # Création d'un dictionnaire vide temporaire pour enregistrer les liens\n", + " # ainsi que la couleur à paramétrer\n", + " persoCaracs = {\"links\":[],\"color\":None}\n", + " # Le premier élément donne le nom du personnage, indice 0 de la liste\n", + " # Les éléments suivants donnent les liens avec les autres personnages\n", + " # On parcours le reste de ces derniers\n", + " for elt in parts[1,:]:\n", + " # En regardant cette partie dans le fichier,\n", + " # on voit que soit les parties commencent\n", + " # par un espace et une lettre,\n", + " # soit un espace et un \"et\" que l'on ne\n", + " # souhaite pas capturer\n", + " # On vérifie si l'élément commence par \" et \" ou non\n", + " if elt.startswith(\" et \"):\n", + " # L'élément commence bien par \" et \"\n", + " # on enlève cette partie\n", + " currentLink = elt[4:]\n", + " else:\n", + " # Ce n'est pas le cas, on enlève juste\n", + " # l'espace\n", + " currentLink = elt[1:]\n", + " persoCaracs[\"links\"].append(currentLink)\n", + " # On enregistre le dictionnaire temporaire des caractéristiques\n", + " # du personnage courant rempli, dans le dictionnaire\n", + " # global des personnages\n", + " emptyPersoDict[parts[0]] = perso\n", + " currentLine = fileToAnalyse.readline()\n", + " m = re.search('(?<=\\s–\\s)[A-ZÀ-Ÿ]{1}[a-zA-ZÀ-ÿ\\s,\\']+', currentLine)\n", + " if m is None:\n", + " isAPersoLine = False" ] }, { -- 2.18.1