Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:如何找到构成levenshtein距离的角色的位置_Python_String Comparison_Levenshtein Distance - Fatal编程技术网

Python:如何找到构成levenshtein距离的角色的位置

Python:如何找到构成levenshtein距离的角色的位置,python,string-comparison,levenshtein-distance,Python,String Comparison,Levenshtein Distance,我在计算一些弦的levenshtein距离。我只想进一步分析距离为1的那个。最重要的是,我感兴趣的是角色的位置。比如说, ('rodange', 'redange', 1) # position 2 我可以想出几种方法来达到目的,但它们似乎不是很方便(比如循环遍历所有字符并逐个比较)。外面已经有东西了吗 我认为没有比你已经想出的更好的解决方案了。或者添加代码,将第一次更改的索引返回到正在使用的levenshtein算法。这应该是在正确位置的一行,以及一个修改的return语句 或者像你说的那

我在计算一些弦的levenshtein距离。我只想进一步分析距离为1的那个。最重要的是,我感兴趣的是角色的位置。比如说,

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

我可以想出几种方法来达到目的,但它们似乎不是很方便(比如循环遍历所有字符并逐个比较)。外面已经有东西了吗

我认为没有比你已经想出的更好的解决方案了。或者添加代码,将第一次更改的索引返回到正在使用的levenshtein算法。这应该是在正确位置的一行,以及一个修改的return语句

或者像你说的那样循环,也不太难:

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)

更换levenshtein距离的成本不是2吗?我真的不明白你的问题。“替换”是什么意思?那要花多少钱呢?据我所知,levenshtein距离是一个字符的插入、删除和替换的总和,所以你可以在N个步骤中将word1变成word2。插入和删除成本1和更新=插入+删除成本2。所以在你的例子中,rodange和redange之间的区别不是1,而是2看看这里-。我可以试着为你们找到解决方案,但如果我能计算出你们需要的差异,那就太好了。不,这是绝对距离,看吧