Python 比较两个字符串以查看是否有一个字符的差异

Python 比较两个字符串以查看是否有一个字符的差异,python,string,Python,String,如果有两个字符串作为输入,我如何通过*删除任何字符串中的一个字符来检查它是否与另一个字符串相同?所有输入均为英文字符 from collections import Counter def Equal_(s1, s2): Number = sum((Counter(s1) & Counter(s2)).values()) return Number 我曾尝试使用计数器函数来查看是否可以执行任何操作,但这只提供了相同的字符数 from collections import Cou

如果有两个字符串作为输入,我如何通过*删除任何字符串中的一个字符来检查它是否与另一个字符串相同?所有输入均为英文字符

from collections import Counter
def Equal_(s1, s2):
    Number = sum((Counter(s1) & Counter(s2)).values())
return Number
我曾尝试使用
计数器
函数来查看是否可以执行任何操作,但这只提供了相同的字符数

from collections import Counter
def Equal_(s1, s2):
    Number = sum((Counter(s1) & Counter(s2)).values())
return Number
这些应该是
False

Equal_("a", "b")
Equal_("a", "AA")
Equal_("bb", "ba")
Equal_("qwer", "qwxer")
Equal_("qwe", "qe")
这些应该是
正确的

Equal_("a", "b")
Equal_("a", "AA")
Equal_("bb", "ba")
Equal_("qwer", "qwxer")
Equal_("qwe", "qe")

您可以使用
difflib
模块中的
ndiff
列出两个字符串之间的差异:

def compareStrings(a, b):
    diff_list = [li for li in difflib.ndiff(a, b) if li[0] != ' ']

    if(len(diff_list) == 1):
        return True

    return False
举个例子:

print(compareStrings("a", "b"))
print(compareStrings("a", "AA"))
print(compareStrings("bb", "ba"))
print(compareStrings("qwer", "qwxer"))
print(compareStrings("qwe", "qe"))
产出:

False
False
False
True
True
此处演示:

尝试以下操作:

def Equal_(s1, s2):
    for i in range(0,len(s1)):
        if s1[0:i] + s1[i+1:] == s2:
            return True

    for i in range(0,len(s2)):
        if s2[0:i] + s2[i+1:] == s1:
            return True

    return False

print(Equal_("a", "b"))
print(Equal_("a", "AA"))
print(Equal_("bb", "ba"))
print(Equal_("qwer", "qwxer"))
print(Equal_("qwe", "qe"))
输出:

False
False
False
True
True

如果通过替换
a->b
我得到
b
,为什么这个
相等?与
相等(“bb”,“ba”)
相同。问题描述非常模糊。您说“更改一个字符”,但示例实际上添加或删除了一个字符。此外,您还没有指定字符顺序是否重要。我更改了描述,对此表示抱歉。根据您的推理,您可能会发现此链接具有教育意义:它是一个拼写检查器(通过一个字符检测关闭等情况)以简洁易懂的方式完成。很好地使用了
ndiff
+1。但是,您在哪里使用
case_a
case_b
?在大O表示法中时间复杂度是多少