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
- Citizen code python solution - 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
- [PyCharm] Pas d'interpréteur 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