1, python库(difflib,可以对string,list进行匹配)
import difflib
s1 = [ 1, 2, 3, 5, 6, 4 ]
s2 = [ 2, 3, 5, 4, 6, 1 ]
matcher = difflib.SequenceMatcher(None, s1, s2)
print(matcher.ratio())
结果为0.6666666666666666,也就是说按顺序进行模糊匹配,最大可以匹配到的字符个数为4个,4/6=0.6666666666666666
2,python库(Levenshtein,对string进行比对)
pip install python-Levenshtein
import Levenshtein
s1="123564"
s2="235461"
err_ratio= Levenshtein.distance(s1,s2)/len(s1)
acc_ratio=1-err_ratio
print(acc_ratio)
输出结果为0.5
3,python (fuzzywuzzy),https://github.com/seatgeek/fuzzywuzzy
pip install fuzzywuzzyfrom fuzzywuzzy import fuzz
from fuzzywuzzy import process
s1="123564"
s2="235461"
fuzz.ratio(s1,s2)
输出结果为67,和difflib效果一样,对字符串比较准确
s1 = [ 1, 2, 3, 5, 6, 4 ]
s2 = [ 2, 3, 5, 4, 6, 1 ]
fuzz.ratio(s1,s2)
输出结果为78,对list效果变差