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开发环境搭建
Dec 16 Python
python下10个简单实例代码
Nov 15 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
Python WSGI的深入理解
Aug 01 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
Python集合的基础操作
Nov 01 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jQuery的ajax和遍历数组json实例代码
2016/08/01 Javascript
JS实现的随机排序功能算法示例
2017/06/09 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
使用WingPro 7 设置Python路径的方法
2019/07/24 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
香港交友网站:be2香港
2018/07/22 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
个人作风建设心得体会
2014/10/22 职场文书
环保建议书作文400字
2015/09/14 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android