Ceci est une mission de Python pour tout le monde Chapitre 10 Affectation 10.2 dans laquelle le problème déclareMon programme ne lit pas correctement des lignes à partir d'un fichier séquentiel
écrire un programme pour lire la Mbox-short.txt et déterminer la distribution par heure du jour pour chacun des messages. Vous pouvez retirer l'heure de la ligne 'De' en trouvant l'heure, puis en la séparant une seconde fois en utilisant deux points. "De [email protected] Sam 5 Jan 09:14:16 2008" Une fois que vous avez accumulé les comptes pour chaque heure, imprimez les comptes, triés par heure comme indiqué ci-dessous.
La sortie souhaitée est
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
mon code est ici
`name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
counts = dict()
for line in handle:
line = line.rstrip()
if line.startswith("From "):
parts = line.split()
# print parts
time = parts[5]
pieces = time.split(':')
hour = pieces[0]
counts[hour] = counts.get(hour,0)+1
print counts `
Le fichier texte peut être trouvé ici http://www.pythonlearn.com/code/mbox-short.txt Lorsque le débogage, j'ai réalisé que mon compilateur passe par chaque ligne de nombreux fois pour retourner des valeurs pour chaque heure qui est beaucoup trop élevé. Je suis sûr que la syntaxe line.startswith("From ")
est correcte pour seulement lire les lignes prévues parce que j'ai utilisé dans une affectation précédente.
Comment puis-je obtenir la bonne fréquence pendant des heures?
Sorted Il serait utile que vous montriez votre sortie réelle. – RobertB
C'est un problème mixte d'onglets et d'espaces. Python ne voit pas votre indentation de la même manière que vous. Activez "afficher les espaces" dans votre éditeur pour voir le problème; votre éditeur peut également avoir une fonctionnalité "convertir les onglets en espaces" pour le réparer. Exécuter Python avec le drapeau '-tt' peut aider à attraper ces erreurs. – user2357112
Merci, il semblait y avoir une erreur d'indentation. Activer cette option dans mon éditeur est un changement très utile pour l'écriture de code. Merci! – jboges