import os
import re
from collections import Counter
fileNames = []
textInfo = []
currentDirectoryPath = os.getcwd()
print(currentDirectoryPath)
regexp = re.compile(
r'(?P<clientIP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+\['
+ '(?P<timestamp>\d{2}/[A-Z][a-z]{2}/\d\d\d\d).+\"'
+ '(?P<action>[A-Z]{3,4}).+\"'
+ '(?P<statuscode>[1-5][0-9][0-9])'
)
#(?P<clientIP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+\[(?P<timestamp>\d{2}/[A-Z][a-z]{2}/\d\d\d\d).+\"(?P<action>[A-Z]{3,4}).+\" (?P<statuscode>[1-5][0-9][0-9])
os.chdir("/content/drive/log")
currentDirectoryPath = os.getcwd()
listOfFileNames = os.listdir(currentDirectoryPath)
#for files in listOfFileNames :
#print(files)
f = open('access_1.log', 'r')
matched = 0
failed = 0
cnt_clientIPs = Counter()
for line in f:
m = re.match(regexp, line)
if m:
cnt_clientIPs.update([m.group('clientIP')])
matched += 1
else:
failed += 1
print("""
client.........: %s
timestamp......: %s
actions........: %s
statuscode.....: %s
""" %
(m.group('clientIP'),
m.group("timestamp"),
m.group("action"),
m.group("statuscode"),
))
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-bc8f84e43987> in <module>()
46 statuscode.....: %s
47 """ %
---> 48 (m.group('clientIP'),
49 m.group("timestamp"),
50 m.group("action"),
AttributeError: 'NoneType' object has no attribute 'group'
我在最后一个print语句中一直没有得到属性错误。我的正则表达式可以运行,但当我无法打印它时。如果我从正则表达式中取出状态代码,就可以打印它。我不知道为什么我总是得到一个无属性错误,当它有属性。 下面是一行测试代码来帮助您运行它。我本想从一个文件中获取它,但我无法在这里上传该文件。 “109.169.248.247---[12/Dec/2015:18:25:11+0100]“GET/administrator/HTTP/1.1”200 4263“-”Mozilla/5.0(Windows NT 6.0;rv:34.0)Gecko/20100101 Firefox/34.0“-”
尝试:
您的正则表达式不允许在示例数据中存在的状态代码之前留有空格
另外,请注意,如果将字符串括在单引号中,则不需要转义双引号
"
。如果使用\"
对它们进行转义,并使用原始字符串,则会引入一个普通的反斜杠我使用的正则表达式是:
相关问题 更多 >
编程相关推荐