发布时间:2020-04-20 09:50:52编辑:admin阅读(2816)
最近在做一个django项目,里面有一个字典数据非常大,虽然已经做了分页处理。但是用户想要找到指定的数据,还得一页页翻,非常繁琐。
字典的结构如下:
file_list = [ { "type": "dir", "size": "123", "name": "access.log", }, { "type": "dir", "size": "123", "name": "access.log.gz", }, { "type": "dir", "size": "123", "name": "error.log", }, { "type": "dir", "size": "123", "name": "access-auth.log", }, ]
当我输入关键字access时,需要出现3个结果。
['access-auth.log', 'access.log', 'access.log.gz']
完整代码如下:
test.py
import re file_list = [ { "type": "dir", "size": "123", "name": "access.log", }, { "type": "dir", "size": "123", "name": "access.log.gz", }, { "type": "dir", "size": "123", "name": "error.log", }, { "type": "dir", "size": "123", "name": "access-auth.log", }, ] def fuzzy_finder(key, data): """ 模糊查找器 :param key: 关键字 :param data: 数据 :return: list """ # 结果列表 suggestions = [] # 非贪婪匹配,转换 'djm' 为 'd.*?j.*?m' # pattern = '.*?'.join(key) pattern = '.*%s.*'%(key) # print("pattern",pattern) # 编译正则表达式 regex = re.compile(pattern) for item in data: # print("item",item['name']) # 检查当前项是否与regex匹配。 match = regex.search(item['name']) if match: # 如果匹配,就添加到列表中 suggestions.append(item) return suggestions # 搜索关键字 keys = "access" result = fuzzy_finder(keys,file_list) print(result)
执行输出:
[{'type': 'dir', 'size': '123', 'name': 'access.log'}, {'type': 'dir', 'size': '123', 'name': 'access.log.gz'}, {'type': 'dir', 'size': '123', 'name': 'access-auth.log'}]
本文参考链接:
https://www.cnblogs.com/weiman3389/p/6047017.html
上一篇: django list类型数据分页
下一篇: docker ssh秘钥免密登录
47620
46020
36924
34492
29102
25754
24587
19730
19274
17769
5585°
6170°
5708°
5765°
6721°
5501°
5506°
6006°
5978°
7309°