Как использовать регулярные выражения Python для извлечения IP-адреса из файлов журнала сервера? - PullRequest
0 голосов
/ 09 мая 2018

Я сейчас начинаю с python. У меня есть файл журнала сервера для страниц, которые я посетил за определенный период времени.

Как мне написать программу на Python, чтобы узнать, какой IP-адрес посещался чаще всего? Должен ли я использовать словарь? Я сделал это, но я не уверен, как использовать регулярные выражения для получения IP-адресов.

import re

openFile = open('text.txt', "r")

readLines = openFile.read()
# pat = re.compile("^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
wordfreq = {}

for word in readLines.split():
    if word not in wordfreq:
        wordfreq[word] = 1
    else:
        wordfreq[word] += 1

print(wordfreq)

# wordList = [(v,k) for k,v in wordfreq.items()]
# wordList.sort(reverse=True)
# 
# print(wordList)

PS: я не хочу использовать счетчик из модуля python. Я рассчитываю сделать это со словарем.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Другой способ извлечь IP-адреса в дополнение к тому, что Ракеш опубликовал ранее:

import re

pattern = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
finalIP = re.findall(pattern, s)

Счетчик см. В его ответе. Я только что опубликовал другое регулярное выражение!

0 голосов
/ 09 мая 2018

Использование регулярных выражений и счетчика

Демо:

import re
from collections import Counter
s = """www.google.com : 255.111.111.111

-some random stuff-

www.facebook.com : 255.222.222.222

-some random stuff-

www.google.com : 255.111.111.111

-some random stuff-

www.google.com : 255.111.111.111

-some random stuff-
"""

ips = re.findall("www\.[A-za-z]+\.[a-z]+\s+\:\s+(.*$)", s, flags=re.MULTILINE)
print(Counter(ips).most_common(1))

Выход:

[('255.111.111.111', 3)]
...