0

以下の形式からログファイルを解析したいのですが、複数のURLが繰り返されており、すべてのURLの合計サイズを計算し、特定のタイプのURLのサイズを計算したいのですが、最善の方法は何でしょうか。

/images/img81a.jpg 6620
/images/img88a.jpg 6990
/images/img80b.jpg 5909 
/images/swb-30-furniture.gif 6216 
/images/button-arrow.png 498
/images/button-arrow-down.png 484 
/images/img81a.jpg 6620 
/images/img80b.jpg 5909 
/images/back-to-top_off.gif 1506 
/images/new-logo.gif 3377 
/images/img81a.jpg 6620        

Result:

Total size computation: 11503

すべての特定のタイプのURLサイズの計算:

 /images/img81a.jpg 19860
 /images/img80b.jpg 11818
 like wise ...

すべてのサイズ値をリストに追加し、追加を実行して合計サイズの結果を取得しますが、同様の種類のURLの場合、サイズの計算には2次元のdictが必要だと思います。これは私が作成しようとはしていません。

 a['/images/img81a.jpg'][6620] = 3
 a['/images/img88a.jpg'][6990] = 1
 a['/images/img80b.jpg'][5909] = 2
 like wise ...
4

1 に答える 1

1

リストにすべての行があるとしましょう。

with open('log.txt') as f:
    dico = dict()
    total_value = 0
    for line in f:
        #Feeding the dictionary
        split_array = line.split()
        possible_key = split_array[0]
        value = int(split_array[1])

        #If url has already been processed, update the value
        #Else, initialize the entry in the dictionary => default=0
        dico[possible_key] = dico.get(possible_key, default=0) + value

        #Updating the global sum
        total_value = total_value + value

使用法:

dico['/images/img81a.jpg'] => 19860
于 2013-02-04T23:44:28.107 に答える