Nombre de caractères sans les espaces dans un fichier

Résolu/Fermé
tomthiel Messages postés 11 Date d'inscription samedi 5 février 2022 Statut Membre Dernière intervention 22 octobre 2022 - Modifié le 28 sept. 2022 à 12:35
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 - 8 oct. 2022 à 19:02

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.

A voir également:

4 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 28 sept. 2022 à 11:13

Bonjour,

Ou alors, tu fais simplement comme ça:

nb_spaces = ligne.count(' ')
nb_car += (len(ligne) - nb_spaces)
1
tomthiel Messages postés 11 Date d'inscription samedi 5 février 2022 Statut Membre Dernière intervention 22 octobre 2022
29 sept. 2022 à 22:11

merci beaucoup!!

0
mamiemando Messages postés 33432 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 décembre 2024 7 809
Modifié le 29 sept. 2022 à 14:21

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
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
28 sept. 2022 à 19:08

ou alors comme ça:

nb_spaces = ligne.count(chr(9)) + ligne.count(chr(32))
nb_car += (len(ligne) - nb_spaces)
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 27 sept. 2022 à 17:20

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
tomthiel Messages postés 11 Date d'inscription samedi 5 février 2022 Statut Membre Dernière intervention 22 octobre 2022
27 sept. 2022 à 17:37

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

0
tomthiel Messages postés 11 Date d'inscription samedi 5 février 2022 Statut Membre Dernière intervention 22 octobre 2022
27 sept. 2022 à 17:36
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
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9
27 sept. 2022 à 20:00

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
tomthiel Messages postés 11 Date d'inscription samedi 5 février 2022 Statut Membre Dernière intervention 22 octobre 2022 > arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023
29 sept. 2022 à 22:11

merci pour votre aide j'ai réussi !

0
arscy Messages postés 173 Date d'inscription dimanche 26 janvier 2014 Statut Membre Dernière intervention 5 octobre 2023 9 > tomthiel Messages postés 11 Date d'inscription samedi 5 février 2022 Statut Membre Dernière intervention 22 octobre 2022
8 oct. 2022 à 19:02

bien joué.

0