以下是两个数组:
import difflib
import scipy
import numpy
a1=numpy.array(['198.129.254.73','134.55.221.58','134.55.219.121','134.55.41.41','198.124.252.101'], dtype='|S15')
b1=numpy.array(['198.124.252.102','134.55.41.41','134.55.219.121','134.55.219.137','134.55.220.45', '198.124.252.130'],dtype='|S15')
difflib.get_close_matches(a1[-1],b1,2)
输出:
['198.124.252.130', '198.124.252.102']
不应该'198.124.252.102'
与'198.124.252.101'
最接近吗?
我查看了文档,其中他们指定了一些浮动类型权重,但没有关于算法使用的信息。
我需要找出最后两个八位组之间的绝对差是1(前提是前三个八位组是相同的)。
所以我先找到最接近的字符串,然后检查最接近的字符串是否符合上述条件。
有没有其他的功能或方法来实现这一点?还有get_close_matches()
是如何表现的?
ipaddr
似乎对ips没有这样的操作。
嗯,在docs中有一部分解释了您的问题:
为了得到您期望的结果,可以使用Levenshtein_distance。
但是为了比较IPs,我建议使用整数比较:
可以使用此样式创建比较函数:
difflib的一些提示:
关于基于自定义逻辑比较IP的需求。 您应该首先验证字符串是否是正确的ip。 然后,使用简单的整数算法编写比较逻辑应该是一个容易的任务,以满足您的要求。根本不需要图书馆。
相关问题 更多 >
编程相关推荐