48(m.group(“clientIP”), 49 m.group(“时间戳”), 50 m.集团(“行动”), AttributeError:“非类型”对象没有属性“组”,python,regex,Python,Regex" /> 48(m.group(“clientIP”), 49 m.group(“时间戳”), 50 m.集团(“行动”), AttributeError:“非类型”对象没有属性“组”,python,regex,Python,Regex" />

非类型';对象没有属性';集团';错误。Python代码 导入操作系统 进口稀土 从收款进口柜台 文件名=[] textInfo=[] currentDirectoryPath=os.getcwd() 打印(currentDirectoryPath) regexp=re.compile( r'(?P\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})。+\[' +“(?P\d{2}/[A-Z][A-Z]{2}/\d\d\d.+\”” +“(?P[A-Z]{3,4})。+\” +“(?P[1-5][0-9][0-9])” ) #( os.chdir(“/content/drive/log”) currentDirectoryPath=os.getcwd() listOfFileNames=os.listdir(currentDirectoryPath) #对于listOfFileNames中的文件: #打印(文件) f=打开('access_1.log','r') 匹配=0 失败=0 cnt_clientIPs=计数器() 对于f中的行: m=重新匹配(regexp,第行) 如果m: cnt_clientIP.update([m.group('clientIP')])) 匹配+=1 其他: 失败+=1 打印(“”) 客户端…………%s 时间戳:%s 操作……:%s 状态代码…:%s """ % (m.group(“clientIP”), m、 组(“时间戳”), m、 集团(“行动”), m、 组(“状态代码”), )) --------------------------------------------------------------------------- AttributeError回溯(最近一次呼叫上次) 在() 46状态代码…:%s 47 """ % --->48(m.group(“clientIP”), 49 m.group(“时间戳”), 50 m.集团(“行动”), AttributeError:“非类型”对象没有属性“组”

非类型';对象没有属性';集团';错误。Python代码 导入操作系统 进口稀土 从收款进口柜台 文件名=[] textInfo=[] currentDirectoryPath=os.getcwd() 打印(currentDirectoryPath) regexp=re.compile( r'(?P\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})。+\[' +“(?P\d{2}/[A-Z][A-Z]{2}/\d\d\d.+\”” +“(?P[A-Z]{3,4})。+\” +“(?P[1-5][0-9][0-9])” ) #( os.chdir(“/content/drive/log”) currentDirectoryPath=os.getcwd() listOfFileNames=os.listdir(currentDirectoryPath) #对于listOfFileNames中的文件: #打印(文件) f=打开('access_1.log','r') 匹配=0 失败=0 cnt_clientIPs=计数器() 对于f中的行: m=重新匹配(regexp,第行) 如果m: cnt_clientIP.update([m.group('clientIP')])) 匹配+=1 其他: 失败+=1 打印(“”) 客户端…………%s 时间戳:%s 操作……:%s 状态代码…:%s """ % (m.group(“clientIP”), m、 组(“时间戳”), m、 集团(“行动”), m、 组(“状态代码”), )) --------------------------------------------------------------------------- AttributeError回溯(最近一次呼叫上次) 在() 46状态代码…:%s 47 """ % --->48(m.group(“clientIP”), 49 m.group(“时间戳”), 50 m.集团(“行动”), AttributeError:“非类型”对象没有属性“组”,python,regex,Python,Regex,我在上一个print语句中一直没有得到属性错误。我的正则表达式可以运行,但当我无法打印它时。如果我从正则表达式中取出状态代码,我就可以打印它。我不知道为什么当它有属性时,我一直没有得到属性错误。 这里有一行测试代码来帮助您运行它。我本来想从一个文件中获取它,但是我无法在这里上传该文件。 “109.169.248.247——[12/Dec/2015:18:25:11+0100]“GET/administrator/HTTP/1.1”200 4263“-”Mozilla/5.0(Windows NT

我在上一个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“-”试试看:

。。。
对于f中的行:
m=重新匹配(regexp,第行)
如果m:
cnt_clientIP.update([m.group('clientIP')]))
匹配+=1
其他:
失败+=1
持续
...

您的正则表达式不允许在示例数据中存在的状态代码之前留有空格

另外,请注意,如果将字符串括在单引号中,则不需要转义双引号。“。如果使用
\”
转义双引号并使用原始字符串,则会引入一个小反斜杠

我使用的正则表达式是:

regexp=re.compile(
r'(?P\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})。+\['
+r'(?P\d{2}/[A-Z][A-Z]{2}/\d\d\d.+''
+r'(?P[A-Z]{3,4})。+“'
+r'\s*(?P[1-5][0-9][0-9])”
)

它还假设测试大约500行或给定文件中的最大行数。假设
m=re.match(regexp,line)
失败,您没有得到任何结果。如果
有一个
,但是它结束了,您执行
m.group('clientIP')
无论如何。顺便说一句,请发布完整的回溯消息,这样我们就不必猜测。---------------------------------------------------------------------------------------AttributeError回溯(最近一次调用)在()46 statuscode中…:%s 47“”“%-->48(m.group('clientIP')),49 m.group(“timestamp”)、50 m.group(“action”)、AttributeError:“NoneType”对象没有属性“group”,只需在if@tdelaney^我希望这有帮助
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'
regexp = re.compile(
    r'(?P<clientIP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).+\['
    + r'(?P<timestamp>\d{2}/[A-Z][a-z]{2}/\d\d\d\d).+"'
    + r'(?P<action>[A-Z]{3,4}).+"'  
    + r'\s*(?P<statuscode>[1-5][0-9][0-9])'
    )