比较两个字符串以查看是否存在一个字符差异

时间:2019-03-27 04:48:07

标签: python string

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

我尝试使用Counter函数来查看是否可以执行任何操作,但这只能提供相同数量的字符。

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")

,这些应为True

Equal_("qwer", "qwxer")
Equal_("qwe", "qe")

2 个答案:

答案 0 :(得分:1)

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

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

此处演示:https://repl.it/@glhr/55369976

答案 1 :(得分:0)

尝试以下操作:

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