Programmation python, fouille de texte

Programmation python, fouille de texte - Python - Programmation

Marsh Posté le 30-05-2013 à 14:15:41    

Bonjour, étant débutant en programmation python je solicite l'aide des internautes afin de compter le nombre de mots d'un texte, la longueur moyenne, minimale et maximale des mots.  
 j'ai commencé par ceci
 
fichier=open("texte.txt","r" )
discour=fichier.read()
 
# Comptage du nombre de mots dans un texte
n = 0           # variable compteur
while 1:
    ch=fichier.readline()
    if ch=="":
        break  
    li=ch.split()
    n=n+len(li)
print "Ce fichier texte contient un total de", n," mots"  
 
Mais cela me rdit qu'il y a 0 mots ce qui est faux. Je suis un peu bloqué donc je demande de l'aide ou comment je pourrais faire autremement.
Merci

Reply

Marsh Posté le 30-05-2013 à 14:15:41   

Reply

Marsh Posté le 31-05-2013 à 21:40:57    

Bonsoir,
utilise des balises pour ton code afin de le rendre plus lisible.
 
Ce que tu écris n'est pas conforme à "l'esprit" Python : pour compter les mots d'un texte, le plus simple (sauf si ton fichier source est gigantesque) est de lire le texte d'un coup sans te soucier des lignes (read()), de le couper (split()) et de placer chaque mot dans un dictionnaire au moyen de quelque chose de spécialisé : tu peux imiter par exemple http://stackoverflow.com/questions [...] -in-python


---------------
rule #1 : trust the python
Reply

Marsh Posté le 08-06-2013 à 00:10:29    

Hello,
 
Lorsque tu fais discours = fichier.read(), le fichier est parcouru en entier, et tout prochain appel à une fonction comme read ou readline renverra une string vide puisque tu as atteint la fin.
 
Cette ligne ne te sert à rien en fait, et c'est à cause d'elle que ton n reste à 0 puisque tu sors de la boucle for à la première itération.
 
Aussi tu peux utiliser le mot clé with qui permet entre autre de manipuler des fichiers sans se soucier des problèmes pouvant survenir à la fermeture.
 

Code :
  1. words = []
  2. with open('texte.txt', 'r') as f:
  3.     for line in f:
  4.         words.extend (line.split())


 
Ce petit bout de code te permet de récupérer tous les mots de ton texte dans words.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed