FuzzyWuzzy Python 库17 Mar 2025 | 6 分钟阅读 在本教程中,我们将学习如何使用 Python 内置的 fuzzyWuzzy 库匹配字符串,并通过各种示例来确定它们有多相似。 引言Python 提供了一些比较两个字符串的方法。以下是一些主要方法。
但还有一种可以有效用于比较的方法,称为 fuzzywuzzy。此方法在区分指向同一事物但拼写略有不同的两个字符串方面非常有效。有时我们需要一个程序来自动识别错误的拼写。 这是一个查找与给定模式匹配的字符串的过程。它使用 Levenshtein 距离 来计算序列之间的差异。 该库可以帮助映射缺少公共键的数据库,例如按公司名称联接两个表,而这些公司名称在两个表中显示不同。 示例让我们看下面的例子。 输出 True 上面的代码返回 true,因为字符串匹配是完全的(100%),如果我们在 str2 中进行更改怎么办。 输出 False 上面的代码返回 false,并且字符串在人类看来几乎相同,但对解释器来说不是。但是,我们可以通过将两个字符串都转换为小写来解决此问题。 输出 True 但是,如果我们更改字符集,我们会遇到另一个问题。 输出 True 为了解决这类问题,我们需要更有效的工具来比较字符串。而 fuzzywuzzy 是计算字符串的最佳工具。 Levenshtein 距离Levenshtein 距离 用于计算两个单词序列之间的距离。它计算更改给定字符串所需的最小编辑次数。这些编辑可以是插入、删除或替换。 示例 - 我们将在前面的示例中使用上面的函数,当时我们正在尝试比较“Welcome to javatpoint.”和“Welcome to javatpoint”。我们可以看到这两个字符串很可能相同,因为 Levensthtein 的长度很小。 FuzzyWuzzy 包这个库的名字有点奇怪和有趣,但它很有用。它有一种独特的方式来比较两个字符串,并返回一个 100 分的匹配分数。要使用此库,我们需要在 Python 环境中安装它。 安装我们可以使用 pip 命令安装此库。 Collecting fuzzywuzzy Downloading fuzzywuzzy-0.18.0-py2.py3-none-any.whl (18 kB) Installing collected packages: fuzzywuzzy Successfully installed fuzzywuzzy-0.18.0 现在输入以下命令并按 Enter。 让我们来理解 fuzzuwuzzy 库的以下方法 Fuzz 模块fuzz 模块用于一次比较两个给定的字符串。它在使用不同方法进行比较后返回 100 分的得分。 Fuzz.ratio()它是 fuzz 模块最重要的函数之一。它根据给定字符串的匹配程度来比较字符串和评分。让我们理解以下示例。 示例 - 输出 100 如上代码所示,fuzz.ratio() 方法返回的分数表示字符串之间差异非常小。 Fuzz.partial_ratio()fuzzywuzzy 库提供了另一个强大的方法 - partial_ratio()。它用于处理复杂的字符串比较,例如子字符串匹配。让我们看下面的例子。 示例 - 输出 44 100 说明 partial_ratio() 方法可以检测子字符串。因此,它会产生 100% 的相似度。它遵循最优部分逻辑,即当短字符串长度为 k,长字符串长度为 m 时,算法会找到最佳匹配的长度为 k 的子字符串。 Fuzz.token_sort_ratio此方法不能保证获得准确的结果,因为如果我们更改字符串的顺序。它可能不会给出准确的结果。 但是 fuzzywuzzy 模块提供了解决方案。让我们理解下面的例子。 示例 - 输出 59 74 100 说明 在上面的代码中,我们使用了 token_sort_ratio() 方法,该方法比 partial_ratio 具有优势。在此方法中,字符串标记按字母顺序排序并连接在一起。但还有另一种情况,例如,如果字符串的长度相差很大。 让我们理解下面的例子。 示例 - 输出 40 64 61 95 在上面的代码中,我们使用了另一种称为 fuzz.token_set_ratio() 的方法,该方法执行集合操作,提取公共标记,然后进行 pairwise 比较。 排序标记的交集始终相同,因为子字符串或较小的字符串包含原始字符串的较大块,或者剩余的标记彼此更接近。 fuzzywuzzy 包提供了 process 模块,该模块允许我们计算具有最高相似度的字符串。让我们理解下面的例子。 示例 - 输出 [('hello', 90), ('Hello Good', 90), ('Morning', 90), ('Good Evenining', 59)] ('hello', 90) 上面的代码将返回给定字符串列表的最高匹配百分比。 Fuzz.WRatioprocess 模块还提供了 WRatio,它比简单的 ratio 提供了更好的结果。它处理大小写和其他一些参数。让我们理解下面的例子。 示例 - 输出 100 结论在本教程中,我们讨论了如何匹配字符串并确定它们的相似程度。我们通过简单的例子来说明,但它们足以清楚计算机如何处理不匹配的字符串。许多实际应用,如拼写检查、生物信息学匹配、DNA 序列匹配等,都基于模糊逻辑。 下一主题Dask Python |
Flask 是一个流行的 Web 框架,用于构建基于 Python 的 Web 应用程序。它允许开发人员通过提供用于处理路由、渲染模板、管理会话以及处理请求和响应的工具来轻松创建 Web 应用程序。Web 应用程序的一个重要方面是处理用户输入。用户可能需要...
7 分钟阅读
在本教程中,我们将讨论 Python 装饰器的一个高级概念。我们假设您对 Python 装饰器有基本的了解。如果没有,您可以从 Python 装饰器教程中学习。什么是记忆化?在学习记忆化之前,让我们简要了解一下...
阅读 2 分钟
元数据 元数据描述了 Spark DataFrame 的结构和模式,提供了关于列名、数据类型和其他相关细节的信息。为了保证数据结构正确并为分析做好准备,DataFrame 的元数据是数据处理和分析中至关重要的一部分。在...
阅读 3 分钟
在 Python 中,threading 模块允许开发人员在单个程序中创建多个线程,从而能够并行执行多个任务。threading 模块还提供了一个 Timer 类,可用于在指定时间后调度任务运行……
5 分钟阅读
上下文管理器是 Python 中管理资源和确保资源使用后正确清理的重要工具。Python 中的语句提供了使用上下文管理器的便捷语法。但是,有时我们需要使用带有附加参数的上下文管理器;为此,...
阅读9分钟
何时以及如何使用 StandardScaler?当给定数据集的特征在其范围内波动很大或以不同测量单位记录时,StandardScaler 就会发挥作用。通过 StandardScaler,数据在均值降至 0 后被缩放到方差为 1....
阅读 4 分钟
Python 是一种用途最广泛的编程语言,它使我们能够轻松执行复杂的任务。在本教程中,我们将学习广泛用于构建 API 的顶级 Python 框架。在此之前,让我们先了解一下什么是 API 以及它是如何工作的。什么是 API? API 是...
5 分钟阅读
欧几里得距离是欧几里得空间中的距离;这两个概念以古希腊数学家欧几里得命名,他的《几何原本》在很长一段时间内成为计算的标准教科书。长度和距离的概念在不同文化中普遍存在,可以追溯到...
阅读 8 分钟
简介:在本教程中,我们将学习 Selenium Python 中的 execute_script 驱动程序方法。Selenium 模块用于使用 Python 进行自动测试。Selenium Python 绑定提供了一个简单的 API。使用 Selenium WebDriver,此 API 用于编写功能或验收测试。一个……
阅读 3 分钟
我们都在学生时代学过素数,如果有人忘记了也不用担心。素数基本上是只能被1或自身整除的自然数,素数的另一个定义是...
11 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India