我获得了原始功能:
def getpingresults():
iplist = dict(load_devicefile())
cmd = "/usr/sbin/fping -C 3 -A -q {}".format(" ".join(map(str, iplist.keys())))
exitcode, out, results = get_fping_output(cmd)
pingresults = []
for aline in results.split("n"):
print('Working on line: {0}'.format(aline))
if aline:
m = re.match(r"(S+)s+:s(S+)s(S+)s(S+)", aline)
ipaddress = m.group(1)
rtt = (float(m.group(2)) + float(m.group(3)) + float(m.group(4))) / 3
if rtt == '-':
iplist[ipaddress] += (float(9999),)
elif float(rtt) > 60:
iplist[ipaddress] += (float(rtt),)
else:
iplist[ipaddress] += (float(rtt),)
print(iplist)
return iplist
我需要编辑此内容,以确保如果在这些M.Group(2-4(中的任何一个中都包含符号( - (。如果是 - 应该(float(9999((。
所以,要在 m.group(2)) + float(m.group(3)) + float(m.group(4)))
中进行搜索,我试图这样做:
for rtt in m.group(range(2,5)):
if rtt == '-':
iplist[ipaddress] += (float(9999),)
elif float(rtt) > 60:
iplist[ipaddress] += (float(rtt),)
else:
iplist[ipaddress] += (float(rtt),)
但是我在此for rtt in m.group(range(2,5)):
File "MassPing_mod.py", line 61, in getpingresults
for rtt in m.group(range(2,5)):
indexError:没有这样的组
如何正确正确匹配三个M.Group(2-4(
您的语法是胡说八道。您正在尝试使用发电机来调用一个数字的group
。而是使用外部的发电机并从中拉出。
for rtt in (m.group(i) for i in range(2,5)):
尽管我可以推荐其他东西,请考虑在m.groups
上使用元组splat-unpacking使它变得更漂亮。
m = re.match(r"(S+)s+:s(S+)s(S+)s(S+)", aline)
ipaddress, *rtts = m.groups()
for rtt in rtts:
# etc...