CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python : compter seulement les lignes avec des mots

jeunedraenei
jeunedraenei
Niveau 1
31 janvier 2017 à 22:38:12

Bonjour ou bonsoir selon l'heure à laquelle vous lirez mon message :) .

Je débute en Python, et malgré qu'il y ait une communauté assez puissante qui me permette de répondre à mes questions par le biais des problématiques d'autres personnes, je reste aujourd'hui bloquée sur un problème.

En effet, j'ai écrit un programme qui me permet de compter le nombre moyen de caractères dans un fichier.txt ainsi que le nombre de lignes. Mais malheureusement, ce dernier me compte également les lignes "vides" (par exemple si à la fin d'une phrase j'ai décidé de retourner à la ligne mais sans rien écrire alors il le comptera comme telle).

Si des personnes s'y connaissent en Python, pourriez-vous me dire quel type code dois-je utiliser pour éviter de compter ces lignes vides ? :-(

Voici mon programme :



import re
 
from collections import Counter
 
f = open("vie.txt")
 
words = re.findall("[a-zA-Z_]+", (f).read())
 
average = sum(len(word) for word in words)/len(words)
 
num_lines = sum(1 for line in (f).read())
 
print("Le nombre de caractère moyen par mot est : %s" % average)
 
print ("Le nombre de ligne est de : %s" %num_lines)
 
f.close()

limaxio
limaxio
Niveau 8
31 janvier 2017 à 23:02:28

Il faudrait que tu fasses un prétraitement sur les lignes.

Du genre :

compteur_de_ligne = 0
for line in f.read () :
    if len (line) > 0 :
        compteur_de_ligne += 1
Blaff6
Blaff6
Niveau 10
31 janvier 2017 à 23:13:53

Je vois que tu utilises une construction "en compréhension":

num_lines = sum(1 for line in (f).read())

Sache que cette façon d'écrire une boucle peut aussi faire l'usage d'une instruction if :

num_lines = sum(1 for line in (f).read() if line) 
# Si line == "" elle n'est pas comptée
Message édité le 31 janvier 2017 à 23:14:03 par Blaff6
godrik
godrik
Niveau 30
31 janvier 2017 à 23:14:03

Pour chaque ligne, il faut que tu decides si elle a des mots dedans ou pas. Une facon simple de faire est de decider si il y a une lettre dedans ou pas.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment