首页 / PYTHON / Python 代码实现模糊查询
Python 代码实现模糊查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python 代码实现模糊查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1552字,纯文字阅读大概需要3分钟。
内容图文
![Python 代码实现模糊查询](/upload/InfoBanner/zyjiaocheng/636/001731fd468e4045b7dce7817313985d.jpg)
一、概述
最近在做一个django项目,里面有一个字典数据非常大,虽然已经做了分页处理。但是用户想要找到指定的数据,还得一页页翻,非常繁琐。
字典的结构如下:
file_dict = { "access.log": { "type": "dir", "size": "123", "name": "access.log", }, "access.log.gz": { "type": "dir", "size": "123", "name": "access.log", }, "error.log": { "type": "dir", "size": "123", "name": "access.log", }, "access-auth.log": { "type": "dir", "size": "123", "name": "access.log", }, }
当我输入关键字access时,需要出现3个结果。
['access-auth.log', 'access.log', 'access.log.gz']
二、代码实现
完整代码如下:
test.py
![Python 代码实现模糊查询 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501043353638.jpg)
![Python 代码实现模糊查询 - 文章图片](/upload/getfiles/0001/2021/5/1/20210501043353659.jpg)
import re file_dict = { "access.log": { "type": "dir", "size": "123", "name": "access.log", }, "access.log.gz": { "type": "dir", "size": "123", "name": "access.log", }, "error.log": { "type": "dir", "size": "123", "name": "access.log", }, "access-auth.log": { "type": "dir", "size": "123", "name": "access.log", }, } def fuzzy_finder(key, data): """ 模糊查找器 :param key: 关键字 :param data: 数据 :return: list """ # 结果列表 suggestions = [] # 非贪婪匹配,转换 'djm' 为 'd.*?j.*?m' pattern = '.*?'.join(key) # 编译正则表达式 regex = re.compile(pattern) for item in data: # 检查当前项是否与regex匹配。 match = regex.search(item) if match: suggestions.append((len(match.group()), match.start(), item)) return [x for _, _, x in sorted(suggestions)] # 搜索关键字 keys = "access" result = fuzzy_finder(keys,file_dict) print(result)View Code
执行输出:
['access-auth.log', 'access.log', 'access.log.gz']
通过正则中的非贪婪匹配,就可以实现这个效果了。
具体原理,请查看下面的参考链接。
本文参考链接:
https://www.cnblogs.com/weiman3389/p/6047017.html
内容总结
以上是互联网集市为您收集整理的Python 代码实现模糊查询全部内容,希望文章能够帮你解决Python 代码实现模糊查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。