Dans les wiki du prof se sont glissés quelques petites erreurs qui font très mal dans un script où chaque élément compte
par exemple en copiant le code de base fournit dans le wiki 2.0 se trouve une erreur qui donne :
mots = sorted(mots ,key=unicode.lower)
TypeError: descriptor 'lower' requires a 'unicode' object but received a 'str'
que l'on peut corriger en
=>
mots = set(liste) ou
mots = sorted(set(liste)) pour classer la liste
De plus dans le wiki 1.9 le script pour faire apparaitre la fréquence d'apparition d'un élément d'une liste est faux aussi, on peut donc très difficilement l'y insérer avec succès pour l'exercice du 2.0.
nous donne l'erreur suivante :
listeord = sorted(set(liste),key=str.lower)
TypeError: descriptor 'lower' requires a 'str' object but received a 'unicode' =>
listeord = sorted(set(liste),key=unicode.lower)Mais cela donnait toujours une erreur :
- Code:
-
fichier.write("<tr><td>"+mot+"</td> <td>"+str(freq)+"</td></tr>")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 15: ordinal not in range(128)J'ai mis ici en code car sinon y'avait des interférences avec le script de la page du forum.J'ai donc pensé à réencoder "mot" au moment de l'écrire dans le fichier pour que cela fonctionne :
- Code:
-
for mot,freq in freqliste:
fichier.write("<tr><td>"+mot.encode("utf-8")+"</td><td>"+str(freq)+"</td></tr>")
Pensez à bien mettre un espace devant "fichier.write(..." quand vous l'écrivez en dessous de for ... in ..., c'est pour dire que cela fait partie de la boucle.
Pour rendre le résultat plus clair vous pourriez par exemple mette " : " entre le mot et la fréquence :
- Code:
-
("<tr><td>"+mot.encode("utf-8")+"</td> : <td>"+str(freq)+"</td></tr>")
Et pour les mettre sous forme de liste (1 par ligne) il vous suffit de rajouter
à la fin :
- Code:
-
("<tr><td>"+mot.encode("utf-8")+"</td> : <td>"+str(freq)+"</td></tr><br>")
Les wiki 2.1 et 2.2 sont très simple (même si ils sont aussi maladroitement expliqués que simples) et le wiki 2.3 est certes moins simple mais plus clair et le code ne révèle aucune erreur, je n'expliquerais rien dessus, à moins qu'il n'y ai des questions.