python matches函数_python difflib.get_close_matches()函数是如何工作的?

嗯,在docs中有一部分解释了您的问题:This does not yield minimal edit sequences, but does tend to yield matches that “look right” to people.

但是为了比较IPs,我建议使用整数比较:>>> parts = [int(s) for s in '198.124.252.130'.split('.')]

>>> parts2 = [int(s) for s in '198.124.252.101'.split('.')]

>>> from operator import sub

>>> diff = sum(d * 10**(3-pos) for pos,d in enumerate(map(sub, parts, parts2)))

>>> diff

29

可以使用此样式创建比较函数:from functools import partial

from operator import sub

def compare_ips(base, ip1, ip2):

base = [int(s) for s in base.split('.')]

parts1 = (int(s) for s in ip1.split('.'))

parts2 = (int(s) for s in ip2.split('.'))

test1 = sum(abs(d * 10**(3-pos)) for pos,d in enumerate(map(sub, base, parts1)))

test2 = sum(abs(d * 10**(3-pos)) for pos,d in enumerate(map(sub, base, parts2)))

return cmp(test1, test2)

base = '198.124.252.101'

test_list = ['198.124.252.102','134.55.41.41','134.55.219.121',

'134.55.219.137','134.55.220.45', '198.124.252.130']

sorted(test_list, cmp=partial(compare_ips, base))

# yields:

# ['198.124.252.102', '198.124.252.130', '134.55.219.121', '134.55.219.137',

# '134.55.220.45', '134.55.41.41']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值