python fuzzywuzzy模块模糊字符串匹配详细用法


Posted in Python onAugust 29, 2019

github主页

导入:

>>> from fuzzywuzzy import fuzz
>>> from fuzzywuzzy import process

1)

>>> fuzz.ratio("this is a test", "this is a test!")
out 97
>>> fuzz.partial_ratio("this is a test", "this is a test!")
out 100

fuzz.ratio()对位置敏感,全匹配。fuzz.partial_ratio()对位置敏感,搜索匹配。

2)

>>> fuzz._process_and_sort(s, force_ascii, full_process=True)

对字符串s排序。force_ascii:True 或者False。为True表示转换为ascii码。如果full_process为True,则会将字符串s转换为小写,去掉除字母和数字之外的字符(发现不能去掉-字符),剩下的字符串以空格分开,然后排序。如果为False,则直接对字符串s排序。

>>> fuzz._token_sort(s1, s2, partial=True, force_ascii=True, full_process=True)

给出字符串 s1, s2的相似度。首先经过 fuzz._process_and_sort()函数处理。partial为True时,再经过fuzz.partial_ratio()函数。partial为False时,再经过fuzz.ratio()函数。

>>> fuzz.token_sort_ratio("fuzzy wuzzy was a bear", "wuzzy fuzzy was a bear")
out 100

partial为False的_token_sort()

fuzz.partial_token_sort_ratio(s1, s2, force_ascii=True, full_process=True)

就是partial为True时的Fuzz._token_sort()

3)

>>> fuzz.token_set_ratio("fuzzy was a bear", "fuzzy fuzzy was a bear")
out 100
fuzz._token_set(s1, s2, partial=True, force_ascii=True, full_process=True)

当partial为False时,就是 fuzz.token_set_ratio()函数。

fuzz.partial_token_set_ratio(s1, s2, force_ascii=True, full_process=True)

partial为True的fuzz._token_set()函数。

4)

fuzz.QRatio(s1, s2, force_ascii=True, full_process=True)

full_process为True时,经过utils.full_process()函数。然后经过fuzz.ratio()函数。对顺序敏感。

fuzz.UQRatio(s1, s2, full_process=True)

就是 force_ascii为False的fuzz.QRatio()函数。

fuzz.WRatio(s1, s2, force_ascii=True, full_process=True)

使用另一种不同算法计算相似度。对顺序敏感。

UWRatio(s1, s2, full_process=True)

是force_ascii为False的fuzz.WRatio()函数。

总结:如果计算相似度的字符串只有字母和数字,直接可以用ratio()和partial_ratio()。但如果还有其他字符,而且我们想要去掉这些没用字符,就用下边的。下边的函数都对顺序不敏感,但token_sort_ratio()系列是全字符匹配,不管顺序。而token_set_ratio()只要第二个字符串包含第一个字符串就100,不管顺序。

5)

>>> choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
>>> process.extract("new york jets", choices, limit=2)
 [('New York Jets', 100), ('New York Giants', 78)]
>>> process.extractOne("cowboys", choices)
 ("Dallas Cowboys", 90)
>>> process.extract(query, choices, processor=default_processor, scorer=default_scorer, limit=5)

query是字符串,choices是数组,元素是字符串。 processor是对输入比较的字符串的处理函数,默认是fuzzywuzzy.utils.full_process(),即将字符串变为小写, 去掉除字母和数字之外的字符(发现不能去掉-字符),剩下的字符串以空格分开。scorer计算两个字符串相似度的函数,默认fuzz.WRatio()。 limit是输出个数。

输出为数组,元素为元组,元祖第一个匹配到的字符串,第二个为int型,为score。对输出按照score排序。

>>> process.extractWithoutOrder(query, choices, processor=default_processor, scorer=default_scorer, score_cutoff=0)

score_cutoff为一个阈值,当score小于该阈值时,不会输出。返回一个生成器,输出每个大于 score_cutoff的匹配,按顺序输出,不排序。

>>> process.extractBests(query, choices, processor=default_processor, scorer=default_scorer, score_cutoff=0, limit=5)

process.extractBests()和process.extract()都调用了process.extractWithoutOrder(),只不过process.extractBests()能传输 score_cutoff。

>>> process.extractOne(query, choices, processor=default_processor, scorer=default_scorer, score_cutoff=0)

也调用了process.extractWithoutOrder(),只不过输出一个score最高的值。

process.dedupe(contains_dupes, threshold=70, scorer=fuzz.token_set_ratio)

contains_dupes是数组,元素为字符串。

取出相似度小于 threshold的字符串,相似度大于 threshold的字符串取最长一个。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字符串中的字符倒转
Sep 06 Python
Python中使用动态变量名的方法
May 06 Python
详解Python下ftp上传文件linux服务器
Jun 21 Python
对numpy.append()里的axis的用法详解
Jun 28 Python
Python封装原理与实现方法详解
Aug 28 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python 使用shutil复制图片的例子
Dec 13 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
Python PIL库图片灰化处理
Apr 07 Python
TensorFLow 数学运算的示例代码
Apr 21 Python
怎么快速自学python
Jun 22 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
python多线程分块读取文件
Aug 29 #Python
用sqlalchemy构建Django连接池的实例
Aug 29 #Python
详解Python 字符串相似性的几种度量方法
Aug 29 #Python
python多线程同步之文件读写控制
Feb 25 #Python
python线程中的同步问题及解决方法
Aug 29 #Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 #Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
Aug 29 #Python
You might like
PHP 类型转换函数intval
2009/06/20 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
2016/09/22 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
详解Angular 4.x NgIf 的用法
2017/05/22 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
学习决心书
2014/03/11 职场文书
党员创先争优承诺书
2014/03/26 职场文书
选秀节目策划方案
2014/06/06 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Python中的程序流程控制语句
2022/02/24 Python
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server