咱们写代码时经常碰到字符串匹配的场景,比如搜索功能、数据清洗啥的。有时候输入的文本可能有点小错误,或者不太标准,这时候传统的精确匹配就不好使了。今儿咱聊聊FuzzyWuzzy,这玩意儿简直是文本模糊匹配的神器,用它来处理这些问题,那叫一个舒服~
1.
安装这玩意儿
装它特别简单,就一行命令:
pip install fuzzywuzzy
pip install python-Levenshtein # 这个能让速度快不少
温馨提示:要是安装时报错,多半是 Python 版本不兼容,换个低版本试试看。
2.
基础玩法先上手
FuzzyWuzzy 最基本的用法贼简单:
from fuzzywuzzy import fuzz
# 看看这两句话多像
similarity = fuzz.ratio(“你好呀,老铁”, “你好啊,老铁”)
print(similarity) # 输出: 94
这数字 94 啥意思?就是相似度分数呗,满分 100。越接近 100 说明越像。这不就跟咱们打游戏的分数似的~
3.
部分匹配才是真好用
有时候咱就想看看一个短文本在长文本里藏没藏着:
from fuzzywuzzy import fuzz, process
text1 = “北京烤鸭”
text2 = “我特别喜欢吃北京烤鸭,太香了”
# 部分比对
score = fuzz.partial_ratio(text1, text2)
print(score) # 输出: 100
瞧见没?完美匹配!这就是partial_ratio的威力,它不在乎文本长短,只认咱要找的那部分。
4.
批量找相似就用 process
写程序的时候老碰到要在一堆文本里找相似的情况:
from fuzzywuzzy import process
choices = [“Python编程”, “Python入门”, “Java教程”, “C++基础”]
result = process.extract(“Pthon编程”, choices, limit=2)
print(result) # 输出: [('Python编程', 90), ('Python入门', 67)]
看到没?就算把 Python 写错了,它也能猜出来咱想找啥!返回的结果里还会告诉咱相似度分数。
5.
按自己喜好调教它
有时候默认的匹配方式不够用,咱能自己设置规则:
from fuzzywuzzy import fuzz
# 忽略大小写和空格
text1 = “hello world”
text2 = “HELLO WORLD”
score = fuzz.ratio(text1.lower(), text2.lower())
print(score) # 输出: 100
温馨提示:处理中文时,最好先把标点符号和空格处理掉,不然可能会影响结果。
6.
实战小案例
来个实际点的例子:
from fuzzywuzzy import process
# 假设这是用户输入的搜索关键词
search = “流浪地球”
# 电影数据库
movies = [
“流浪地球2”,
“流浪地球:飞跃2023”,
“三体”,
“星际穿越”,
“流弹地球” # 故意打错的
]
# 找相似的电影名
matches = process.extract(search, movies, limit=3)
for movie, score in matches:
这代码一跑,立马就能看出哪些电影名跟咱搜的最像,连打错字的都能找出来,简直太智能了。
建议把相似度阈值设在 80 分以上,这样筛出来的结果才更靠谱。要是分数设太低,可能会匹配出一些不相关的结果,那就尴尬了。
写代码时遇到文本匹配的场景,FuzzyWuzzy 绝对是个好帮手。它不光能处理常见的文本匹配,还能自动纠错,特别适合搜索功能和数据清洗。赶紧去试试吧!
领取专属 10元无门槛券
私享最新 技术干货