python - 如何使用 python 正则表达式从服务器日志文件中提取 IP 地址?
问题描述
我目前正在开始使用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 模块中的计数器。我想用字典来做到这一点。
解决方案
使用正则表达式和计数器
演示:
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)]
推荐阅读
- linux - ubuntu crontab 芹菜节拍
- php - 如何访问数组中的对象属性
- keras - 在 Keras 中实现架构的建议
- wpf - XAML 中各个 Point 资源的 PointCollection 资源?
- java - org.xml.sax.SAXParseException:cvc-elt.1.a:找不到元素的声明
- html - col-sm-12 在智能手机上没有 100% 的宽度 - 我做错了什么?
- c - 如何在 Fedora 中编译 -static ncursesw
- reactjs - 将 React 包含为 webpack 外部结果会导致找不到模块“react”
- javascript - 车轮事件 PreventDefault 不取消车轮事件
- python - Visual Studio Code - Code Runner:'python' 不是内部或外部命令、可运行程序或批处理文件