Nombre de caractères sans les espaces dans un fichier

Résolu
tomthiel Messages postés 14 Statut Membre -  
arscy Messages postés 196 Statut Membre -

Bonjour,

Je dois créer un programme python pour compter les caracteres d'un texte mais je ne dois pas compter les espaces.

Ça fait plusieurs heures que je cherche et je n'arrive pas a trouver de solution. Je vous joins ce que j'ai commencé à écrire.

4 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Bonjour,

    Ou alors, tu fais simplement comme ça:

    nb_spaces = ligne.count(' ')
    nb_car += (len(ligne) - nb_spaces)
    1
    1. tomthiel Messages postés 14 Statut Membre
       

      merci beaucoup!!

      0
  2. mamiemando Messages postés 33174 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    Bonjour

    Il faudrait préciser ce que tu entends par espace, car en python a.isspace() retourne True si a est un espace, une tabulation, ou un retour à la ligne.

    S'il faut ignorer tous les caractères entrant dans cette catégorie :

    def count_non_space_chars(s: str) -> int:
        return sum(
            1
            for a in s
            if not a.isspace()
        )

    Si on ne veut ignorer que les caractères ' ' :

    def count_non_space_chars(s: str) -> int:
        return sum(
            1
            for a in s
            if a != ' '
        )

    Une fois ce choix fait, pour utiliser la fonction sur un fichier, disons /etc/motd :

    filename = "/etc/motd"
    with open(filename, "r") as f:
        print(count_non_space_chars(f.read()))

    Bonne chance
     

    1
    1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
       

      ou alors comme ça:

      nb_spaces = ligne.count(chr(9)) + ligne.count(chr(32))
      nb_car += (len(ligne) - nb_spaces)
      0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Bonjour,

    Au lieu de poster une image, il vaut mieux afficher ton code ici

    mode d'emploi:

    https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

    Visuellement, ça doit ressembler à ça:

    for k in range(10):
        print(k)

    A part ça, il existe une méthode Python applicable aux string permettant de compter les occurrences

    d'un caractère donné (ici l'espace, donc)

    Et ensuite, on fait ça:

    nb_car += (len(ligne) - nb_d_espaces_de_la_ligne)
    0
    1. tomthiel Messages postés 14 Statut Membre
       

      pouvez vous m'aider a le modifier ? je ne comprends pas vraiment votre réponse

      0
  4. tomthiel Messages postés 14 Statut Membre
     
    with open("devoirnsi.txt","r") as fic:
        nb_mot=0
        nb_car=0
        nb_ligne=0
        nb_space=0
        nb_voy=0
        nb_cons=0
        contenu=[]
        for ligne in fic:
            nb_ligne+=1
            contenu+=ligne.split()
            nb_car+=len(ligne)
                
        print("Le nombre de ligne dans ce texte est de :",nb_ligne)
        print("Le nombre de caractères dans ce texte est de :",nb_car-nb_space)
        print("Le nombre de mots dans dans ce texte est de :",len(contenu))
        print ("Le nombre de voyelles dans dans ce texte est de :",nb_voy)
        print ("Le nombre de consonnes dans dans ce texte est de :",nb_cons)
    
    
    0
    1. arscy Messages postés 196 Statut Membre 8
       

      Bonsoir,

      Si tu ne vois pas comment t'y prendre pour ne pas prendre en compte les espaces, ça veut dire que tu ne sais pas ce que tu as codé :-(

      - Comment fonctionne la fonction split ?
      - À quoi ça te sert de réduire le contenu d'une ligne à un tableau?

      Lorsque tu seras en mesure de répondre à ces deux points tu devrais pouvoir avancer significativement sur ton schmilblick (voire résoudre ta question, en fait).
      Par contre si tu souhaitais compter le nombre d'espaces (cf ta variable 'nb_space') tu gagnerais à procéder différemment, par exemple en cherchant le caractère espace _ ' '_ dans chaque ligne ou bien dans une concaténation de tes différentes lignes.
      Tiens-nous au courant de ta progression

      0
      1. tomthiel Messages postés 14 Statut Membre > arscy Messages postés 196 Statut Membre
         

        merci pour votre aide j'ai réussi !

        0
      2. arscy Messages postés 196 Statut Membre 8 > tomthiel Messages postés 14 Statut Membre
         

        bien joué.

        0