user=matches[1]对象没有属性''u getitem'Python

2024-09-30 12:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我的python脚本在运行时得到错误

['dc:9f:db:1a:60:62']

Traceback (most recent call last): File "search.py", line 26, in <module> user = matches[1] TypeError: 'callable-iterator' object has no attribute '__getitem__'

我的脚本如下

import re

austins_mac_address = "f8:27:93:88:1c:95"

dd = {'f8:27:93:88:1c:95' : 'Austin iPhone', 'dc:9f:db:1a:60:64' : '4-Ops-AP', 'dc:9f:db:1a:60:62' : '4-TechOffices-AP', 'dc:9f:db:1a:61:b9' : '7-SalesReception-AP', 'dc:9f:db:1a:60:63' : '7-Marketing-AP', 'dc:9f:db:1a:61:bd' : '7-Sales-Engineers-AP', 'dc:9f:db:1a:60:f3' : '4-Dev-AP', 'dc:9f:db:1a:2c:dd' : '4-Hurricane-AP', '24:a4:3c:02:cf:f6' : '6-Meeting-AP', 'dc:9f:db:1a:60:ef' : '4-Lounge-AP', 'dc:9f:db:1a:61:ba' : '7-QA-AP', 'dc:9f:db:1a:60:5f' : '4-TechFloor-AP', 'dc:9f:db:1a:2d:95' : '4-training1-AP'}

dat = '[2014-07-22 10:21:06,821] <inform_stat-3> WARN event - [event] User[e4:98:d6:27:4c:b6] roams from AP[dc:9f:db:1a:60:64] to AP[dc:9f:db:1a:2d:95] on "channel 11(ng)"' aps = [] import re for line in open("server.log"): matches = re.finditer('(([0-9a-f]{2}[:-]){5}[0-9a-f]{2})', line) if matches: macAddrs = [] for match in matches: macAddrs.append(match.group(0)) print(macAddrs) user = matches[1] if (user.equals(austins_mac_address)): source = matches[3] dest = matches[5]


Tags: inimportre脚本dbaddressmacline
1条回答
网友
1楼 · 发布于 2024-09-30 12:24:38

问题是matches是一个迭代器,因为re.finditer返回的是迭代器。迭代器会动态地生成数据;它并不是一次全部包含在一个数据结构中。这就是为什么你不能一开始就接触到它的第二个元素。迭代器被设计成只循环一次(就像您在for match in matches上所做的那样),而不是在任何时候访问随机元素。在

如果您想访问随机元素,比如matches[1],您需要首先遍历迭代器并将其所有数据存储在另一个列表中。在

raw_matches = re.finditer('(([0-9a-f]{2}[:-]){5}[0-9a-f]{2})', line)
if raw_matches:
        matches = []
        for match in raw_matches:
                matches.append(match)

类似的,假设第一个对象在生成第二个对象时没有被破坏。在

相关问题 更多 >

    热门问题