Python 比较两个具有相似字母的字符串

Python 比较两个具有相似字母的字符串,python,string,function,Python,String,Function,我想知道如何通过Python中的函数比较两个不同的字符串。更具体地说,两个不同字符串的相似程度,以及它们的相似性百分比(出现在两个字符串中的字母)。提前感谢。您可以查看各种方法来比较字符串并获得差异。看起来像difflib.different.compare(string1,string2)将为您提供一个生成行的迭代器。前缀为-的行在一个字符串中,前缀为空的行在两个字符串中,前缀为+的行在另一个字符串中。字符串相似性是一个指标,取决于您测量的内容。您是否正在尝试将键入错误的单词与词典中的目标单词

我想知道如何通过Python中的函数比较两个不同的字符串。更具体地说,两个不同字符串的相似程度,以及它们的相似性百分比(出现在两个字符串中的字母)。提前感谢。

您可以查看各种方法来比较字符串并获得差异。看起来像
difflib.different.compare(string1,string2)
将为您提供一个生成行的迭代器。前缀为
-
的行在一个字符串中,前缀为空的行在两个字符串中,前缀为
+
的行在另一个字符串中。

字符串相似性是一个指标,取决于您测量的内容。您是否正在尝试将键入错误的单词与词典中的目标单词进行匹配?比较DNA或蛋白质序列?尝试基于与搜索查询的相似性进行文档检索?进行模糊名称匹配?对于这些任务中的每一项,可能需要使用不同的算法。如果你真的要问一个完全一般性的问题,你可以从阅读Levenshtein距离开始。

def pctSame(s1,s2):
def pctSame(s1,s2):
    # Make sorted arrays of string chars
    s1c = [x for x in s1]
    s1c.sort()
    s2c = [x for x in s2]
    s2c.sort()
    i1 = 0
    i2 = 0
    same = 0
    # "merge" strings, counting matches
    while ( i1<len(s1c) and i2<len(s2c) ):
        if s1c[i1]==s2c[i2]:
            same += 2
            i1 += 1
            i2 += 1
        elif s1c[i1] < s2c[i2]:
            i1 += 1
        else:
            i2 += 1
    # Return ratio of # of matching chars to total chars
    return same/float(len(s1c)+len(s2c))
#生成字符串字符的排序数组 s1c=[x代表s1中的x] s1c.sort() s2c=[s2中x代表x] s2c.sort() i1=0 i2=0 相同=0 #“合并”字符串,计算匹配项
虽然(i1from
difflib
几乎就是你想要的。它给出的分数在0到1之间,取决于它们看起来有多像。

可能的dup:询问者要求一个模块可以做到这一点。我问的是如何做到这一点,没有不同的问题modules@bahaaz为什么?这是作业吗?你试过什么了?你能描述一下算法吗您希望实现的thm。这太模糊了。首先告诉我们
compare('hello','yellow')
的答案应该是什么以及为什么。