假设我们有两个例子:
之一:
a = "Six d.o.g.s."
b = "six d.o.g.s"
2:
c = "Death Disco"
d = "deathdisco"
e = "deathdisco666"
两者略有不同。第一个有一个点,第二个没有空格。有些是小写的。
目的:
对于给定的a
和b
,我们希望a.lower()==b.lower()
提供true
如果他们有两个字母“错误”。
要使c
和d
成立,因为“错误”只有一个空格。
但对于c
和e
,虽然e
还有两个字母
长度(与c
相比)我们有三个不同的字母。
我怎么能用python做到这一点?通过正则表达式或是否有类似目的的图书馆?
答案 0 :(得分:0)
所以考虑到minitech的评论,我写了我发现的代码:
def levenshtein(seq1, seq2):
oneago = None
thisrow = range(1, len(seq2) + 1) + [0]
for x in xrange(len(seq1)):
twoago, oneago, thisrow = oneago, thisrow, [0] * len(seq2) + [x + 1]
for y in xrange(len(seq2)):
delcost = oneago[y] + 1
addcost = thisrow[y - 1] + 1
subcost = oneago[y - 1] + (seq1[x] != seq2[y])
thisrow[y] = min(delcost, addcost, subcost)
return thisrow[len(seq2) - 1]
print levenshtein(a,b) < 2