示例:
number1 = 54378
number2 = 54379
if number1 (is similar to) number2:
print (number1 + " " + number2)
input("what to do")
我想在这两个数字之间进行比较,让程序在发生这种(在number1和number2之间)相似时通知我。
我希望解决方案具有灵活性,可以提供更多相似之处(_84第一位数字不同)。
BTW,我正在使用Python 3.X
答案 0 :(得分:3)
您可以使用difflib
:
>>> from difflib import SequenceMatcher
>>> number1 = 54378
>>> number2 = 54379
>>> SequenceMatcher(None, str(number1), str(number2)).ratio()
0.80000000000000004
创建一个包含其数字字符串表示的SequenceMatcher
对象后,如果速度有问题,请使用ratio()
(或quick_ratio()
或real_quick_ratio()
来获取相似度0和1。
在玩了一下之后,你可以弄清楚它们应该是多么相似的好指标,并像这样使用它:
metric = 0.6 # just an example value
if SequenceMatcher(None, str(a), str(b)).ratio() > metric:
# a and b are similar
答案 1 :(得分:0)
您可以执行以下操作之一:
两者都会采用不均匀的数字,例如(100, 10)
(200, 12)
from itertools import izip_longest
def findSim(a, b):
aS = str(a)
bS = str(b)
return [abs(int(x)-int(y)) if y != None else int(x) for x,y in izip_longest(aS,bS)]
返回包含所有位置差异的列表
from itertools import izip_longest
def findSim(a, b):
aS = str(a)
bS = str(b)
return sum(abs(int(x)-int(y)) if y != None else int(x) for x,y in izip_longest(aS,bS))
返回所有位置的总和差异。