これは、問題は私のプログラムが正しく順次ファイルから行を読んでいません
を述べている皆章10割り当て10.2用のPythonからの割り当てでのmbox-short.txt一読するプログラムを書き、各メッセージの1日の時間別分布を把握する。 'From'行から時間を見つけ、コロンを使用して文字列をもう一度分割することで、時間を引き出すことができます。 "from [email protected]土1月5日09:14:16 2008年" 1時間ごとにカウントを集計したら、下に示すように時間単位でカウントをプリントアウトします。
所望の出力は、デバッグ、私は私のコンパイラは、多くの各ラインを通過することに気づいた場合、テキストファイルはここにhttp://www.pythonlearn.com/code/mbox-short.txt 見つけることができ、ここで
`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 `
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
私のコードです時間がそれほど高い時間ごとの値を返します。以前の割り当てで使用したので、構文line.startswith("From ")
は目的の行だけを読むために正しいと確信しています。
時間数を正しく取得するにはどうすればよいですか?
です。 – RobertB
これはタブとスペースの混在問題です。 Pythonはあなたと同じ方法でインデントを表示しません。エディタで「空白を表示」をオンにして問題を確認します。あなたのエディタには、「タブをスペースに変換する」機能があります。 '-tt'フラグを付けてPythonを実行すると、これらのエラーをキャッチできます。 – user2357112
インデントエラーのようです。私のエディタでそのオプションを有効にすることは、コードを書く上で本当に役に立つ変更です。ありがとう! – jboges