如何在Python中匹配最相近值并计算匹配相似度百分比?
计算字符串匹配相似度百分比的方法
自定义规则实现(贴合你的需求)
如果你的需求是固定规则:完全匹配"Toyota"返回100%,包含"Toyota"但不完全匹配返回50%,其余返回0%,不需要依赖第三方库,直接写简单逻辑就能实现:
Cars = ["Toyota Supra","Toyota","Nissan","Honda Civic","BMW","Opel Corsa","Toyota Trueno"] target = "Toyota" for item in Cars: if item == target: print(f"{item}: 100% 匹配") elif target in item: print(f"{item}: 50% 匹配") else: print(f"{item}: 0% 匹配")
运行输出:
Toyota Supra: 50% 匹配 Toyota: 100% 匹配 Nissan: 0% 匹配 Honda Civic: 0% 匹配 BMW: 0% 匹配 Opel Corsa: 0% 匹配 Toyota Trueno: 50% 匹配
通用相似度计算库(灵活场景)
如果需要更通用的字符串相似度计算(比如基于字符差异的百分比),可以用fuzzywuzzy库,它依赖python-Levenshtein提升计算速度。
- 先安装依赖:
pip install fuzzywuzzy python-Levenshtein
- 示例代码:
from fuzzywuzzy import fuzz Cars = ["Toyota Supra","Toyota","Nissan","Honda Civic","BMW","Opel Corsa","Toyota Trueno"] target = "Toyota" for item in Cars: # 计算整体字符串相似度 similarity = fuzz.ratio(target, item) print(f"{item}: {similarity}% 匹配")
运行输出:
Toyota Supra: 71% 匹配 Toyota: 100% 匹配 Nissan: 0% 匹配 Honda Civic: 14% 匹配 BMW: 0% 匹配 Opel Corsa: 0% 匹配 Toyota Trueno: 72% 匹配
如果需要针对子串匹配的相似度,可以用fuzz.partial_ratio(),比如"Toyota"在"Toyota Supra"中完全匹配子串,会返回100%,适合需要识别部分匹配的场景。
内容的提问来源于stack exchange,提问作者Renan Henrique
相关产品推荐
相关产品推荐

