2013-08-01 37 views
2

我正在計算某些字符串的levenshtein距離。只有距離爲1的我想進一步分析。首先,我感興趣的是造成距離的角色的位置。舉例來說,Python:如何找到使levenshtein距離的字符的位置

('rodange', 'redange', 1) # position 2 

我能想到幾種方法到那裏的,但他們似乎並不非常方便(如通過所有字符循環,並通過一個比較它們一個)。那裏已經有東西了?

+0

沒有更換的成本是2 Levenshtein距離? –

+0

我真的不明白你的問題。替換是什麼意思?哪個花費? – LarsVegas

+0

據我記得,levenshtein距離是插入刪除和替換字符的總和,所以你可以在N個步驟中將word1改爲word2。插入和刪除成本1和更新=插入+刪除成本2.所以在你的情況下,rodange和redange之間的差異不是1,但是2 –

回答

1

我不認爲有比您已經想出的更好的解決方案。或者將返回第一個變化的索引的代碼添加到您正在使用的levenshtein算法中。這應該是在正確的地方單線,並修改返回聲明。

或者循環通過它像你說的,不是太困難或者:

idx = next(i for (i, (a, b)) in enumerate(zip(w1, w2)) if a != b) 

如果你喜歡它更短:

from operator import eq 
idx = map(eq, w1, w2).index(False)