Python cractères!
Résolu
Bonjour,
Je suis bloqué : je dois compter le nombre de a, de b, de c, etc... dans un fichier texte. Malheureusement, la fonction
Voilà ou j'en suis:
Je suis bloqué : je dois compter le nombre de a, de b, de c, etc... dans un fichier texte. Malheureusement, la fonction
countne marche pas. Pouvez-vous m'aider ?
Voilà ou j'en suis:
with open('jules.txt','r') as texte: contenu = texte.read() dico = {} for lettre in contenu: dico[(lettre)]=texte.count() texte.close
A voir également:
- Python cractères!
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
4 réponses
Bonjour,
C'est bien le nombre de 'lettre' dans 'contenu' que tu veux
donc pourquoi écris tu texte.count() ?
texte n'est que l'identifiant du fichier jules.txt en ouverture ...
C'est bien le nombre de 'lettre' dans 'contenu' que tu veux
donc pourquoi écris tu texte.count() ?
texte n'est que l'identifiant du fichier jules.txt en ouverture ...
Bonjour,
Beaucoup de choses ne vont pas dans ton programme.
Bref, voici à quoi ça devrait plutôt ressembler :
Bonne chance
Beaucoup de choses ne vont pas dans ton programme.
- Si le fichier n'est pas ouvert avec succès, le programme plantera. Si tu rattrapes cette exception, tu verras que
dico
n'est pas déclaré au bon niveau. - Le mot clé
with
est conçu pour fermer le file descriptor (que tu as appelétexte
, mais qui n'est pas du texte) à la sortie du bloc. Il ne faut pas le fermer explicitement, sinon il sera fermé deux fois. - La méthode
count
sert à compter combien d'occurrence d'une sous-chaîne apparaissent dans une sous-chaîne. Par exemple,"abcabc".count("abc")
vaut 2. Elle ne répond donc pas à ton problème. - Si tu utilises
count
pour chaque lettre de l'alphabet, le programme sera très inefficace, puisque la chaîne qui contient l'intégralité du fichier sera relue pour chacun des caractères.
Bref, voici à quoi ça devrait plutôt ressembler :
#!/usr/bin/env python3 import sys from collections import defaultdict from pprint import pprint filename = "/etc/motd" d = defaultdict(int) try: with open(filename) as f: s = f.read() for a in s: d[a] += 1 except: print(f"Can't read {filename}", file=sys.stderr) pprint(d)
Bonne chance