3行实现模糊匹配

三行实现模糊匹配

def fuzzyfinding(user_input,collection):        
    s = [(len(re.compile('.*?'.join(user_input)).search(i).group()),re.compile('.*?'.join(user_input)).search(i).start(),i ) for i in collection if(re.compile('.*?'.join(user_input)).search(i))]
    return [x for _,_, x in sorted(s)]
充分利用列表推导式;跟sql语句原理一样‘;
至于两行的太长了,你们去弄吧...import re

原文地址

    10行python代码写的模糊查询

10行便于理解,结构严密; 如下:

>>> import re
>>> def fuzzyfinder(user_input, collection):
        suggestions = []
        pattern = '.*?'.join(user_input)    # Converts 'djm' to 'd.*?j.*?m'
        regex = re.compile(pattern)         # Compiles a regex.
        for item in collection:
            match = regex.search(item)      # Checks if the current item matches the regex.
            if match:
                suggestions.append((len(match.group()), match.start(), item))
        return [x for _, _, x in sorted(suggestions)]

本文地址:http://write.blog.csdn.net/postedit/52224806





转载于:https://www.cnblogs.com/actanble/p/6713451.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值