2018년 6월 29일 금요일

Python RE 2

import re
import statistics
import collections

data = []
f = open("localhost_access_log.2016-04-01.txt", "r" )
for l in f:
    match = re.search("^[\d:.]+", l )
    ip = match.group()

    match = re.search('\[([\w/:]+)', l)
    date = match.group(1)

    match = re.search(' /[\w.-]*', l)
    doc = match.group().strip()

    match = re.search('[\d-]+$', l)
    byte = match.group()
    if (byte == '-'):
        byte = 0    byte = int(byte)
    data.append([ip, date, doc, byte])
f.close()

print("1.전체 로그 출력")
for i in data:
    print("접속ip: {}\n접속일: {}\n요청문서: {}\n바이트크기: {}".format(i[0], i[1], i[2], i[3]))
    print("-"*30)

print("\n2. ip별 접속회수")
ip_list = [n[0] for n in data]
cip = collections.Counter(ip_list)
for i in cip:
   print(i, cip[i],"회")

print("\n3. 문서별 방문회수")
doc_list = [n[2] for n in data]
cdoc = collections.Counter(doc_list)
for i in cdoc:
   print(i, cdoc[i],"회")

print("\n4. 전체전송 바이트 사이즈, 평균 전송 바이트 사이즈, 전송 바이트 사이즈 표준 편차")
byte_list = [n[3] for n in data]
s = sum(byte_list)
m = statistics.mean(byte_list)
d = statistics.stdev(byte_list)
print("전체 전송 바이트 크기: {}\n평균 전송바이트 사이즈: {}\n전송 바이트 사이트 표준편차: {}".format(s,m,d))

print("\n5. 가장 많이 방문한 ip와 방문 회수")
m = cip.most_common(1)
m = m[0]
print(m[0], m[1], "회" )







import re
import collections
from statistics import mean, stdev
fp = open('localhost_access_log.2016-04-01.txt')
data = []
for rd in fp:
    match = re.search('([\d.:]+) \S+ \S+ \[([\w:/]+) \S+\] "\S+ (\S+) \S+" \d+ (\S+)', rd )
    d={}
    d['ip']= match.group(1)
    d['dt']= match.group(2)
    d['view']= match.group(3)
    bsize =  match.group(4)
    bsize = 0 if bsize=='-' else int(bsize)
    d['bsize']= bsize
    data.append( d )

# # 1. 전체 로그 출력# for dt in data:#     print("접속ip:", dt['ip'])#     print("접속일:", dt['dt'])#     print("요청문서:", dt['view'])#     print("바이트크기:", dt['bsize'])#     print("="*10)#2.ipList = [ n['ip'] for n in data]
ipCount = collections.Counter(ipList)
for ip,cnt in ipCount.items():
    print("ip:",ip,"접속횟수:",cnt)

#3.# viewList = [ n['view'] for n in data]# viewCount = collections.Counter(viewList)# for view,cnt in viewCount.items():#     print("페이지:",view,"접속횟수:",cnt)
#4.
print( "전체전송사이즈:", sum([n['bsize'] for n in data] ) )
print( "평균전송사이즈:", mean([n['bsize'] for n in data] ) )
print( "표준편차:", stdev([n['bsize'] for n in data] ) )

#5.mip,cnt  =  ipCount.most_common(1)[0]
print("가장많이 방문ip:", mip, "방문횟수:", cnt )

# print( data )
    # print("ip:", match.group(1) )    # print("dt:",match.group(2) )    # print("view:", match.group(3) )    # print("bsize:", match.group(4) )    # print("="*20)

댓글 없음:

댓글 쓰기