javascript和python中字符串序列的相似度/差异率

2024-09-30 01:22:14 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个参考字符串

“bao ji”

还有一个目标串

“abcd标记”

javascript和python中有没有一种简单的方法来获得字符串序列相似性比?在

示例:

“abcd zhi”与“abcd abcd”的字符“E”不同,因此相似性比率很高,但小于1.0

“bcdabcda”与“abcdabEd”差别很大,因为特定字符串索引处的每个字符都不同,因此相似度比为0.0

请注意,相似性比率不是每个字符串中有多少相似字符,而是序列彼此之间的相似程度

因此代码类似

# python - incorrect for this problem 
difflib.SequenceMatcher(None, "bcdabcda", "abcdabEd").ratio()

会错的


Tags: 方法字符串标记示例目标序列javascript字符
2条回答

怎么样

float(sum([a==b for a,b in zip(my_string1,my_string2)]))/len(my_string1)



>>> s1,s2 = "abcdabcd","abcdabEd"
>>> print float(sum([a==b for a,b in zip(s1,s2)]))/len(s1)
0.875

您可以使用这个通用公式,它适用于具有相同或不同长度的字符串或对象数组:

相似性=#普通/(sqrt(nx*ny))

其中#common是常见的出现(在本例中是匹配字符的数量);
nx是对象数组x(或称为x的字符串)的长度;
数组的长度称为y。在

如果字符串的长度与公式简化为简单情况的长度相同:

相似性=#普通/n;
哪里: n=nx=ny。在

在python中,字符串的相似性公式(根据需要考虑字符的顺序)可以写成:

from math import sqrt

def similarity(x, y):
    n=min(len(x), len(y))
    common=0
    for i in range(n):
        if (x[i]==y[i]):
            common+=1
    return common/sqrt(len(x)*len(y))

在javascript中也是类似的。在

相关问题 更多 >

    热门问题