内置Python函数,用于字符串比较,如N-gram

内置Python函数,用于字符串比较,如N-gram,python,Python,Python中是否有任何内置函数执行类似于Ngram.Compare('text','text2')字符串比较。我不想安装N-gram模块。我尝试了通过执行dir('text') 我希望在比较两个字符串时得到一个百分比匹配。您希望通过 不想安装某些东西意味着:你必须自己编写代码 标准库中的 您还可以执行Levenshtein距离: def lev(seq1, seq2): oneago = None thisrow = range(1, len(seq2) + 1) + [0]

Python中是否有任何内置函数执行类似于Ngram.Compare('text','text2')字符串比较。我不想安装N-gram模块。我尝试了通过执行
dir('text')


我希望在比较两个字符串时得到一个百分比匹配。

您希望通过

不想安装某些东西意味着:你必须自己编写代码

标准库中的

您还可以执行Levenshtein距离:

def lev(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]

def di(seq1,seq2):
    return float(lev(seq1,seq2))/min(len(seq1),len(seq2))

print lev('spa','spam')
print di('spa','spam')

可能是@thewolf的复制品对不起,我不想要Ngrams。我需要两条线的百分比匹配你说的“百分比”匹配是什么意思?你能提供一些输入/输出示例吗?NGram.compare('spa','spam')给出的结果为0.375,即37.5%