我有一个包含到服务器的跟踪路由的文件。我想提取最后一个路由器接触和编译平均延迟。你知道吗
我尝试了以下操作,但它只显示单个延迟值。如何添加延迟并获得延迟的平均值?。你知道吗
文件包含跟踪:
traceroute to 34.233.68.171 (34.233.68.171), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.458 ms 1.319 ms 1.236 ms
2 173.230.125.21 (173.230.125.21) 9.911 ms 9.308 ms 9.702 ms
3 99.82.176.202 (99.82.176.202) 9.616 ms 10.239 ms 10.095 ms
4 54.239.104.28 (54.239.104.28) 31.762 ms 31.663 ms 54.239.104.88 (54.239.104.88) 32.679 ms
5 54.239.104.23 (54.239.104.23) 28.090 ms 54.239.104.99 (54.239.104.99) 26.883 ms 54.239.104.63 (54.239.104.63) 30.373 ms
6 * * *
7 54.239.43.176 (54.239.43.176) 22.007 ms 54.240.229.173 (54.240.229.173) 27.092 ms 54.239.42.188 (54.239.42.188) 34.865 ms
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 52.93.28.172 (52.93.28.172) 22.837 ms 52.93.28.194 (52.93.28.194) 31.958 ms 52.93.28.154 (52.93.28.154) 27.522 ms
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
36 * * *
我的代码:
import re
rgexpress = re.compile(r'\s\s\d\d?.\d\d\d+\s+ms')
with open("new2") as f:
for line in f:
result = rgexpress.search(line)
print(result)
我的结果是:
None
<re.Match object; span=(28, 38), match=' 1.458 ms'>
<re.Match object; span=(35, 45), match=' 9.911 ms'>
<re.Match object; span=(33, 43), match=' 9.616 ms'>
<re.Match object; span=(33, 44), match=' 31.762 ms'>
<re.Match object; span=(33, 44), match=' 28.090 ms'>
None
<re.Match object; span=(33, 44), match=' 22.007 ms'>
None
None
None
None
None
None
None
None
None
None
<re.Match object; span=(31, 42), match=' 22.837 ms'>
None
None
None
None
None
None
None
None
期望结果: ''' (22.837+31.958+27.522)/3 = 27.439 ''' 平均值=27.439∗
我希望编辑的版本更好。你知道吗
使用re.findall查找一行上所有匹配的延迟,将它们转换为float并计算平均值:
注意,应该使用
\d+
,就像我在这里做的那样,而不是\d\d
作为延迟的整数部分,否则任何大于100ms的延迟都不会匹配。你知道吗编辑以回答评论中的问题:
您还可以建立一个方法列表:
并使用
相关问题 更多 >
编程相关推荐