python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020-03-29 07:11
4873 查看
已知一个元素,在一个list中找出相似的元素
使用场景:
已知一个其它来源的字符串, 它有可能是不完全与我数据库中相应的字符串匹配的,因此,我需要将其转为适合我数据库中的字符串
使用场景太绕了, 直接举例来说吧
随便举例:
按青岛城市的城区来说,
我数据库中存储的城区是个list:['市北区', '市南区', '莱州市', '四方区']等
从其它的数据来源得到一个城区是:市北
我怎么得到与市北相似相近的市北区
解决方案:
In [1]: import difflib In [2]: cityarea_list = ['市北区', '市南区', '莱州市', '四方区'] # 正常情况下,我是这么用的 In [3]: a = difflib.get_close_matches('市北',cityarea_list,1, cutoff=0.7) In [4]: a Out[4]: ['市北区'] # 测试关键字改为市区,且要求返回相似度最高的两个元素 In [5]: a = difflib.get_close_matches('市区',cityarea_list,2, cutoff=0.7) In [6]: a Out[6]: ['市南区', '市北区'] # 测试关键字改为市区, 要求返回相似度最高的一个元素 In [7]: a = difflib.get_close_matches('市区',cityarea_list,1, cutoff=0.7) In [8]: a Out[8]: ['市南区']
详解:
difflib是python 自带的一个方法
返回的结果是个list
返回的list元素数量是可控的,
cutoff参数是0到1的浮点数, 可以调试模糊匹配的精度,一般为0.6就可以了, 1为精确匹配,
补充拓展:python列表进行模糊查询
先看一下代码
a=['时间1', '时间2', '时间3', 'ab','asds'] dd = [i for i,x in enumerate(a) if x.find('s')!=-1] print(dd)
需要注意的是这个方法只适合与都是字符串的,因为find是字符串重的方法, 如果list中有数字和None,都是不行的
以上这篇python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- 利用编辑距离的子串模糊匹配——python实现
- python实现每次处理一个字符的三种方法
- 【Python】简单例题tuple和list的转换;实现删除一个list里重复的元素;对list a进行排序,并且从最后一个开始删除重复元素
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- python实现每次处理一个字符的三种方法
- python笔试题之找出一个列表里出现频次最高的元素(most common elements in a list)
- 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。
- jsp实现的数据库模糊搜索(可以自己设定匹配字符个数)
- <仅是自己做笔记。。。系列15>实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3这些都要找出来
- 将一个LIST拆分成一个子LIST元素个数为n的二维数组(python实现)
- python - 列表分组技巧 #写出一段 Python 代码,实现分组一个 list 里面的元素,如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....]
- 面试题---请写出一段Python代码实现删除一个list里面的重复元素
- python实现从字符串中找出特定字符的位置以及个数的方法
- **请写出一段Python代码实现删除一个list里面的重复元素
- Python代码实现:删除一个list里面的重复元素
- jsp实现的数据库模糊搜索(可以自己设定匹配字符个数)
- 定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);
- 使用Python list通过递归实现一个表达式计算器
- 实现List按与一个字符串的相似度和字母顺序排序(适用于模糊查询后的排序)
- 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。