两个好用到爆的 Python 模块,建议收藏!

目录

Fuzz模块

1. 简单匹配(Ratio):

2. 非完全匹配(Partial Ratio):

3. 忽略顺序匹配(Token Sort Ratio):

4. 去重子集匹配(Token Set Ratio):

代码示例

Process模块

如何使用extract模块提取多条数据:

如果使用extractOne提取一条数据:

总结



在 Python 编程中,有许多令人惊叹的模块可以帮助我们加快开发速度和提升代码效率。其中,fuzz 模块和 process 模块都是两个备受推崇、实用到极致的模块。无论是进行模糊匹配还是处理字符串,这两个模块都能为我们带来便利。让我们一起来探索这两个好用到爆的 Python 模块吧!

两个好用到爆的 Python 模块,建议收藏!_第1张图片

Fuzz模块

Fuzz模块是一个用于模糊测试的工具,主要用于发现软件应用中的漏洞和异常行为。它通过向目标应用程序输入大量的随机、无效或者非预期的数据,来测试其对异常情况的处理能力。Fuzz模块可以自动化地生成大量测试输入,并监控应用程序的响应,以检测潜在的错误或安全漏洞。这项技术在软件开发和安全领域中非常重要,可以提高系统的稳定性和安全性。

在Fuzz模块中,四个主要函数(方法)是简单匹配(Ratio)、非完全匹配(Partial Ratio)、忽略顺序匹配(Token Sort Ratio)和去重子集匹配(Token Set Ratio)。下面我会依次介绍它们的作用:

1. 简单匹配(Ratio):

计算两个字符串的相似程度,使用了Levenshtein距离算法。该方法仅考虑字符串的重叠字符数量,不考虑字符的顺序。

2. 非完全匹配(Partial Ratio):

类似于简单匹配,但它允许在两个字符串中进行部分匹配。它会在字符串中查找最长的公共子序列,并计算相似程度。

3. 忽略顺序匹配(Token Sort Ratio):

先将字符串分割成单词,并按字母顺序对单词进行排序,然后再进行匹配。这种方法可以忽略单词的顺序差异,从而更好地比较字符串的相似性。

4. 去重子集匹配(Token Set Ratio):

类似于Token Sort Ratio,但除了对单词进行排序外,还会删除重复的单词。这种方法适用于处理含有重复内容的字符串,如句子或文档。

这些函数可以帮助我们在对比字符串时,考虑不同的匹配要求,从而提供更准确的相似度评估。

代码示例

from fuzzywuzzy import fuzz

# 简单匹配(Ratio)
str1 = "apple"
str2 = "apples"
ratio = fuzz.ratio(str1, str2)
print("简单匹配(Ratio):", ratio)

# 非完全匹配(Partial Ratio)
partial_ratio = fuzz.partial_ratio(str1, str2)
print("非完全匹配(Partial Ratio):", partial_ratio)

# 忽略顺序匹配(Token Sort Ratio)
str3 = "apple pie"
str4 = "pie apple"
token_sort_ratio = fuzz.token_sort_ratio(str3, str4)
print("忽略顺序匹配(Token Sort Ratio):", token_sort_ratio)

# 去重子集匹配(Token Set Ratio)
str5 = "apple pie"
str6 = "pie and apple"
token_set_ratio = fuzz.token_set_ratio(str5, str6)
print("去重子集匹配(Token Set Ratio):", token_set_ratio)

Process模块

Process模块是Python标准库中的一个模块,它提供了创建和控制子进程的功能。通过Process模块,我们可以在Python程序中启动新的进程,并与其进行通信和控制。

两个好用到爆的 Python 模块,建议收藏!_第2张图片

下面是使用Process模块创建子进程的一个简单示例:

import multiprocessing

# 定义一个函数作为子进程的任务
def worker():
    print("子进程执行中")

if __name__ == '__main__':
    # 创建一个子进程
    p = multiprocessing.Process(target=worker)

    # 启动子进程
    p.start()

    # 等待子进程结束
    p.join()

    print("主进程执行完毕")

在上述示例中,通过创建一个Process对象并传递一个目标函数(worker)作为参数,我们定义了子进程的任务。然后使用start()方法启动子进程,它会在独立的进程中执行worker函数。最后使用join()方法等待子进程结束,以确保主进程执行完毕。

Process模块提供了很多的功能,例如,如果想要从一段文本中提取多条数据,可以使用extract模块来实现;如果想从一组候选项中提取出与特定查询字符串最匹配的一条数据,可以使用`extractOne`函数来实现。这使得我们能够更灵活地处理多进程编程任务。

如果想要从一段文本中提取多条数据,可以使用extract模块来实现。extract模块提供了一些函数和方法,可以基于预定义的模式、规则或者正则表达式来提取文本中的特定数据或者模式。

两个好用到爆的 Python 模块,建议收藏!_第3张图片

如何使用extract模块提取多条数据:

import re
from fuzzywuzzy import fuzz
from fuzzywuzzy import process

# 定义文本内容
text = """
这是一段包含多条数据的文本。
数据1: 12345
数据2: ABCDE
数据3: 67890
"""

# 定义正则表达式模式
pattern = r"数据\d: (.+)"  # 匹配以"数据数字:"开头的内容

# 使用正则表达式提取数据
matches = re.findall(pattern, text)

# 使用FuzzyWuzzy库进行模糊匹配
best_match = process.extractOne("678", matches)

# 输出提取的数据
print("提取的数据:")
for match in matches:
    print(match)

# 输出模糊匹配结果
print("最佳匹配结果:", best_match)

在上述示例中,我们首先定义了一段包含多条数据的文本。然后,通过定义一个正则表达式模式来匹配以"数据数字:"开头的内容,并使用re.findall函数提取所有匹配的结果。

接下来,我们使用FuzzyWuzzy库中的process.extractOne函数对提取到的数据进行模糊匹配。在示例中,我们将"678"作为待匹配字符串,对提取到的数据进行模糊匹配,并找到最佳匹配结果。

最后,我们输出提取到的所有数据和最佳匹配结果。

两个好用到爆的 Python 模块,建议收藏!_第4张图片

请注意,这个示例仅展示了如何使用extract模块提取多条数据,并使用FuzzyWuzzy库进行模糊匹配。我们可以根据具体的需求和数据格式进行适当的调整。

如果使用extractOne提取一条数据:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

# 定义候选项列表
candidates = ["apple", "banana", "orange", "strawberry", "kiwi"]

# 定义查询字符串
query = "apples"

# 使用FuzzyWuzzy的extractOne函数提取最匹配的候选项
best_match = process.extractOne(query, candidates)

# 输出最佳匹配结果
print("最佳匹配结果:", best_match)

在以上示例中,我们定义了一个候选项列表(`candidates`)和一个查询字符串(`query`)。然后,我们调用`process.extractOne`函数,并传入查询字符串和候选项列表作为参数,以提取与查询字符串最匹配的候选项。

最后,我们输出最佳匹配结果。

请注意,以上示例仅展示了如何使用`extractOne`函数提取一条数据,并返回最佳匹配结果。我们可以根据具体的需求和数据类型进行适当的调整。

总结


总而言之,fuzz 模块和 process 模块是 Python 中两个非常优秀的工具,它们为我们提供了强大而简便的函数和方法,使得模糊匹配和字符串处理变得轻而易举。无论是需要进行模糊匹配、字符串相似度比较还是快速提取最佳匹配项,这两个模块都值得考虑。利用它们的优势,可以更高效地开发和处理数据,为 Python 项目增添更多的可能性。不要犹豫,尝试使用 fuzz 模块和 process 模块,体验它们带来的惊喜吧!

你可能感兴趣的:(关于python那些事儿,python)