forked from kickman2l/hometasks
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask2_shreben.py
More file actions
67 lines (48 loc) · 1.62 KB
/
Copy pathTask2_shreben.py
File metadata and controls
67 lines (48 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import re
import operator
# =============== Task 1 ============================
keys = ['a', 'b', 'c', 'd']
values = ['1', '2', '3', '4', '5', '6', '7']
values2 = ['11', '22', '33']
def createDict(keyList, valuelist):
d = {}
for i in range(len(keyList)): d[keyList[i]] = 'None'
if len(valuelist) <= len(keyList):
for i in range(len(valuelist)): d[keyList[i]] = valuelist[i]
else:
for i in range(len(keyList)): d[keyList[i]] = valuelist[i]
print d
print "\n=== Task 1 ===\n"
createDict(keys, values)
createDict(keys, values2)
# =============== Task 2 ============================
str1 = 'Was it a car or a cat I saw'
str2 = 'Once upon a time in London...'
def palindr(string):
s = string.lower().strip()
pattern = re.compile(r'\s+')
s = re.sub(pattern, '', s)
if s == s[::-1]:
print "String '%s' is palindrome" % string
else:
print "String '%s' is not palindrome" % string
print "\n=== Task 2 ===\n"
palindr(str1)
palindr(str2)
# =============== Task 3 ============================
a = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
print "\n=== Task 3 ===\n"
print list((set(a) & set(b)))
# =============== Task 4 ============================
f = open('access_log','r')
ip = []
hit = {}
for line in f:
ip.append(re.match("(.*)(\s-\s-)",line).group(1))
for i in (list(set(ip))):
hit[i] = int(ip.count(i))
hit = sorted(hit.items(),key = operator.itemgetter(1),reverse=True)
print "\n=== Task 4 ===\n"
print "Top 10 source ip by requests number:\n"
for i in range(0,10): print "{0} - {1}".format(*hit[i])