こんにちは、ウェブページの月次および日次の訪問数を生成する 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)
ほとんどの出力を取得できますが、次の 2 つの条件で出力が間違っています。1. ArticleName と ArticleDate が同じ場合、ArticleName を合計する方法を取得できませんでした。たとえば、このスクリプトは行 Ra の出力を提供します: Ra 20130601 1 1 Ra 20130601 3 3 Ra 20130602 1 1 したがって、最後に Ra は、1 ではなく 1+3+1=5 を最終的な月間カウントとして出力する必要があります。
- 前回の記事と等しくないすべての記事を条件付けして 3 番目に表示するので、同じ記事名と日付の記事の値を 2 回取得します。同様に:
Ra 20130601 1 1
印刷されるべきではありませんでした。これを修正する方法を知っている人はいますか?さらに情報が必要な場合はお知らせください。