python fuzzywuzzy模块模糊字符串匹配详细用法
作者:sunyao_123 发布时间:2021-10-02 10:58:03
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的字符串取最长一个。
来源:https://blog.csdn.net/sunyao_123/article/details/76942809


猜你喜欢
- 通过使用bootstrap框架,并配合Django自带的Paginator分页组件即可实现简单的分页效果。1.创建MyWeb项目python
- optim 的基本使用for do:1. 计算loss2. 清空梯度3. 反传梯度4. 更新参数optim的完整流程cifiron = nn
- 由于存在函数内部不能访问全局作用的,所以就需要一种可以引入上一级作用域的语法结构,可以通过use使用函数声明时所在作用域的变量的值。php的
- 一.使用DOM生成和读取XML文件 实例一: <?php //Creates XML string and XML document
- 本文实例讲述了基于Python开发chrome插件的方法。分享给大家供大家参考,具体如下:谷歌Chrome插件是使用HTML、JavaScr
- 业务难点设计一个抽奖系统,这个系统并不是具体化,是抽象化,具有以下的几个难点:1、抽奖业务需要 复杂多变2、奖品类型和概率设置3、公平的抽奖
- MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。 日期类型 &nbs
- pip是常用的python包管理工具,用python的同学,都离不开pip ~~第一种 在系统自带的python2.7的路径下pip是pyt
- 如下所示:>>> import numpy as np>>> x = np.array([1, 2])&
- 本文实例为大家分享了python opencv实现图像配准与比较的具体代码,供大家参考,具体内容如下代码 from skimage
- 【一】添加监听事件 addHandler:function(node,type,fn){if
- 开放源代码社区为了扩展MySQL的使用范围,开发出了.Net框架(.NET Framework)中可以使用的数据库连接器。我们就来学习一下如
- 1.数据是什么?在 Python 以及其他所有面向对象编程语言中,类都是对数据的构成(状态)以及数据 能做什么(行为)的描述。由于类的使用者
- 本文实例为大家分享了Python3连接MySQL模拟转账的具体实现代码,供大家参考,具体内容如下# coding:utf8import sy
- python中正则表达式中的匹配次数问题网上有很多解释,最多的就是*匹配0或者无数次,+匹配1次或无数次,?匹配0次或者1次。可是虽然这个文
- 前言本文主要介绍了关于Python中TCP socket的写法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。一、 服务器
- 一、数学相关1、绝对值:abs(-1)2、最大最小值:max([1,2,3])、min([1,2,3])3、序列长度:len('ab
- 如何自动反馈电子邮件?很多网站上的电子邮件都是自动回复的,就象163电子邮局提供的邮件自动回复功能一样。这是怎么实现的?我们可以用ASPMa
- 先看看效果:效果-点击弹出弹框 -点击复选框,已选div中 显示已选中的选项 -再次点击取消选中状态,已选div中 显示的选中选项取消显示
- 写在前面从本节开始,计算机视觉教程进入第三章节——图像特征提取。在本章,你会见到一张简简单单的图片中