Привет, я пишу скрипт python для генерации ежемесячных и ежедневных посещений веб-страниц. Входной файл:Python скрипт не работает по мере необходимости
ArticleName Date Hour Count/Visit
Aa 20130601 10000 1
Aa 20130601 10000 1
Ew 20130601 10000 1
H 20130601 10000 2
H 20130602 10000 1
R 20130601 20000 2
R 20130602 10000 1
Ra 20130601 0 1
Ra 20130601 10000 2
Ra 20130602 10000 1
Ram 20130601 0 2
Ram 20130601 10000 3
Ram 20130602 10000 4
Re 20130601 20000 1
Re 20130602 10000 3
Rz 20130602 10000 1
Мне нужно посчитать общее количество ежемесячных и ежедневных просмотров страниц каждой страницы.
Выход:
ArticleName Date DailyView MonthlyView
Aa 20130601 2 2
Ew 20130601 1 1
H 20130601 2 2
H 20130602 1 3
R 20130601 2 2
R 20130602 1 4
Ra 20130601 5 5
Ra 20130602 1 6
Ram 20130601 5 5
Ram 20130602 4 9
Re 20130601 1 1
Re 20130602 3 4
Rz 20130602 1 1
Мой сценарий:
#!/usr/bin/python
import sys
last_date = 20130601
last_hour = 0
last_count = 0
last_article = None
monthly_count = 0
daily_count = 0
for line in sys.stdin:
article, date, hour, count = line.split()
count = int(count)
date = int(date)
hour = int(hour)
#Articles match and date match
if last_article == article and last_date == date:
daily_count = count+last_count
monthly_count = count+last_count
# print '%s\t%s\t%s\t%s' % (article, date, daily_count, monthly_count)
#Article match but date doesn't match
if last_article == article and last_date != date:
monthly_count = count
daily_count=count
print '%s\t%s\t%s\t%s' % (article, date, daily_count, monthly_count)
#Article doesn't match
if last_article != article:
last_article = article
last_count = count
monthly_count = count
daily_count=count
last_date = date
print '%s\t%s\t%s\t%s' % (article, date, daily_count, monthly_count)
Я могу получить большую часть продукции, но мой выход неправильно для двух условий: 1. Не удалось получить путь суммировать ItemName, если ArticleName и ArticleDate являются одинаковыми. Например, этот сценарий дает выходные данные для строки Ra: Ra 20130601 1 1 Ra 20130601 3 3 Ra 20130602 1 1 Итак, в конце Ra должно печатать 1 + 3 + 1 = 5 в качестве итогового общего месячного счета вместо 1.
- Так как я показываю в третьем условии, если все статьи, которые не равны последней статье, я получаю значение статьи с тем же именем и датой статьи дважды. Например:
Ra 20130601 1 1
не должны были быть напечатаны. Кто-нибудь знает, как исправить это? Сообщите мне, если вам нужна дополнительная информация.
Все данные предназначены для Jun2013, но все статьи отличаются. Мне нужно узнать, сколько раз каждую статью посещали ежедневно и ежемесячно. – CtrlV
Я понял. Они являются совокупным счетом? правильно? – falsetru
'R 20130602 1 4' должен быть' R 20130602 1 3'? – falsetru