You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用re.pattern.search提取日志IP时报NoneType不可下标错误如何解决

问题排查结果

报错根因

  • 直接触发TypeError: 'NoneType' object is not subscriptable的原因:re.search()在当前行没有匹配到符合正则规则的IP时,会返回None,直接对None执行[0]取下标操作不符合语法规则。
  • 代码还存在两处额外问题:
    1. 变量名不一致:你初始化的空列表叫list,但循环中实际往lst里追加元素,运行时会触发未定义变量报错
    2. 命名不规范:list是Python内置类型名,用作自定义变量名会覆盖原生list的功能,不建议这么用

修复后可运行代码

import re

with open(r'C:\Users\Admin\Desktop/Test error file.txt') as fh:
    file_lines = fh.readlines()

# 基础IP匹配正则,如需更严格的合法性校验可以替换下方正则
pattern = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})')

ip_list = []

for line in file_lines:
    match_result = pattern.search(line)
    # 仅在匹配到结果时才取值存入列表
    if match_result:
        ip_list.append(match_result[0])

print(ip_list)

可选优化

如果需要过滤999.999.999.999这类不符合IP地址规则的非法匹配结果,可以把正则替换为:
r'((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'

内容的提问来源于stack exchange,提问作者CodeSteak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:21:02