【问题标题】:Getting "TypeError: 'NoneType' object is not subscriptable" with pattern.search使用 pattern.search 获取“TypeError:'NoneType' 对象不可下标”
【发布时间】:2021-09-26 00:48:53
【问题描述】:

我正在编写一个 python 程序,用于从错误日志文件中写出 IP 地址。我把它编码了,但是每当我在错误日志上尝试它时,我都会得到一个

TypeError: 'NoneType' 对象不可下标

我在这个下面写了代码,以防有人想看看我具体做了什么。如果有人知道我的错误,那就太好了。

import re

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

pattern = re.compile(r'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})')

list=[]

for line in file:
    lst.append(pattern.search(line)[0])

print(list)

【问题讨论】:

  • 在尝试使用之前检查pattern.search(line)的结果。在这种情况下,它会返回 None,这会导致您的错误。
  • 请将错误消息的相关部分发布为作为问题本身的一部分,而不是作为指向其他地方的链接(因为在这种情况下,链接会指向“拒绝访问”页面)。

标签: python typeerror python-re


【解决方案1】:

pattern.search 如果未找到匹配项,则返回 None。为了解决这个问题

for line in file:
    match = pattern.search(line)
    if match is not None:
        lst.append(match[0])
    else:
        lst.append(None)

如果没有匹配,我在这里附加了一个None 值。如果没有匹配,您可以更改逻辑以执行您需要的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2021-02-14
    相关资源
    最近更新 更多