量化字符串之间字符转换数量的快速方法(python 或其中的库)
Fast method to quantify number of character transpositions between strings (python or libraries within)
假设我们有两个字符串:
x1 = "abcdef"
x2 = "abdcfe"
x1 == x2 # return False
我的目标是找出这两个具有相同字符的字符串之间有多少换位。在上面的示例中,有 2 个或 4 个,具体取决于您如何查看它(仍然是偶数,所以两种方式都有效)。另一种方法是对字符串中的字符进行排序,然后像这样进行比较:
x1s = ''.join(sorted(x1)) # 'abcdef'
x2s = ''.join(sorted(x2)) # 'abcdef'
x1s == x2s # returns True of course
这样一来,就失去了换位的数量。无法想象简单的 Levenshtein 对此有何帮助,因为使用可用的相同字符以外的编辑次数具有相同的权重。例如
#pip install python-Levenshtein # you'll need this
from Levenshtein import distance
distance(x1, x2) # gives 3
distance(x1s, x2s) # gives 0
有什么想法吗?
好的,找到答案了,这里是:
len([i for i, j in zip(x1, x2) if i != j])
而这个 returns 换位计数。
假设我们有两个字符串:
x1 = "abcdef"
x2 = "abdcfe"
x1 == x2 # return False
我的目标是找出这两个具有相同字符的字符串之间有多少换位。在上面的示例中,有 2 个或 4 个,具体取决于您如何查看它(仍然是偶数,所以两种方式都有效)。另一种方法是对字符串中的字符进行排序,然后像这样进行比较:
x1s = ''.join(sorted(x1)) # 'abcdef'
x2s = ''.join(sorted(x2)) # 'abcdef'
x1s == x2s # returns True of course
这样一来,就失去了换位的数量。无法想象简单的 Levenshtein 对此有何帮助,因为使用可用的相同字符以外的编辑次数具有相同的权重。例如
#pip install python-Levenshtein # you'll need this
from Levenshtein import distance
distance(x1, x2) # gives 3
distance(x1s, x2s) # gives 0
有什么想法吗?
好的,找到答案了,这里是:
len([i for i, j in zip(x1, x2) if i != j])
而这个 returns 换位计数。