Python正则表达式匹配、比较和判定

2021-05-13 14:24:50 发布

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

我有一个字典,它有不同的Ip作为键,它的ping结果作为值。我只想在ping结果通过某个条件时继续我的脚本

假设ping结果(字典值)如下:

10 packets transmitted, 10 packets received, 0.00% packet loss

我创建了一个正则表达式,并提取了以下每个值:

^{pr2}$

我提取了这些值。。在

现在,我想编写一个带有条件的正则表达式,通过它,只有当字典中每个Ip的数据包丢失百分比小于5%时,我才会要求脚本继续执行。在

我可以再次考虑从数据包丢失中提取数据,然后再进行比较,但我只是想知道是否有更好的方法可以做到这一点?在

如果有任何想法,请分享。。在

2条回答
网友
1楼 ·

您可以仅匹配感兴趣的部分,并且仅对小于5%的数字使用正则表达式进行匹配:

match = re.search(r' +[0-4]\.\d+% packet loss', str, re.M | re.I)
if match:
    do_stuff_with_match()

但是,请注意正则表达式比数值比较慢得多,因此您可能仍然希望使用前面解析的结果。在

网友
2楼 ·

您不需要正则表达式:

s = "10 packets transmitted, 10 packets received, 0.00% packet loss"
trans,recv,loss = s.split(",")

print(trans,recv,loss)
('10 packets transmitted', ' 10 packets received', ' 0.00% packet loss')
print(float(loss.split("%")[0] > 5))
False

如果您有dict,请使用all检查每个值是否都是>;5%

相关问题