Это задание из задания 10.2 главы 10 Python для всех, в котором говорится о проблеме.
Напишите программу, которая читает mbox-short.txt и вычисляет распределение по часам дня для каждого из сообщений. Вы можете вытащить час из строки «От», найдя время, а затем разделив строку во второй раз, используя двоеточие. «От человека @example.com, сб, 5 января, 09:14:16 2008». После того, как вы подсчитали количество за каждый час, распечатайте количество, отсортированное по часам, как показано ниже.
Желаемый результат
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
мой код здесь
`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 `
Текстовый файл можно найти здесь http://www.pythonlearn.com/code/mbox-short.txt При отладке я понял, что мой компилятор просматривает каждую строку много раз, возвращая слишком высокие значения за каждый час. Я уверен, что синтаксис line.startswith("From ")
верен только для чтения намеченных строк, потому что я использовал его в предыдущем задании.
Как я могу получить правильную частоту для часов?
-tt
может помочь отловить эти ошибки. - person user2357112 supports Monica   schedule 11.05.2017