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