AttributeError: 'NoneType'无group属性 正则匹配有结果仍报错如何解决
报错原因与解决方法
核心报错原因
- 你只验证了部分行的匹配结果,但文件中存在不满足正则匹配规则的行,这类行调用
search()方法会返回None,你没有做非空判断就直接调用group()方法,直接触发了该报错。 - 代码存在变量拼写错误:你将匹配结果存入
intf变量,但后续字典赋值时误写为inft,该问题会在匹配逻辑修复后触发NameError,需要同步修正。
修复方案
增加匹配结果判空逻辑,仅当匹配成功时再执行后续取值、计数操作,同时修正变量拼写,修复后的代码如下:
import re route = {} # 正则前缀加r避免转义歧义,正则内/无需额外转义 gig_pattern = re.compile(r'(GigabitEthernet)([0-9]/[0-9]/[0-9]/[0-9])') with open('ip-routes.txt','r') as f: for line in f: match = gig_pattern.search(line) # 新增匹配成功判断,跳过不匹配的行 if match: intf = match.group(2) route[intf] = route[intf] + 1 if intf in route else 1
如果想简化计数逻辑,也可以改用dict.get()方法写法:
route[intf] = route.get(intf, 0) + 1
内容的提问来源于stack exchange,提问作者Saleh Alsalamah
相关产品推荐
相关产品推荐

