python difflib print只匹配两个字符串之间的部分

2024-06-15 08:48:17 发布

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

我对python完全陌生,我需要一些关于difflib的帮助。我试着阅读文档,但对我来说不容易理解文档。在

我想比较两个字符串,我想输出的只是两个字符串之间的匹配前缀部分(不打印差异)。在

示例:

t1 = "hello my name is Tom" 
t2 = "hello his name is Sawyer"

预期输出为:“hello”

我尝试了以下方法,但输出不是我想要的,因为它将输出打印为数组,并且不仅打印匹配部分:

^{pr2}$

其他示例-2:

t1 = "20180628-153020"
t2 = "20180628-173020"

预期输出打印输出: “20180628-1” 而后缀“3020”即使字符串的两部分都匹配位置和字符,也应该忽略它。在

请帮帮我。。谢谢您。。。在

更新2018/07/02

我写了一个小代码,只得到两个字符串之间相似的前缀部分(没有使用takewhile作为来自@Eugene的第一个答案),但是我认为@Eugene在答案中编写的第二个代码比我的要短和高效。 这是我的代码:

def getprefix(s1, s2):
    pref = ""
    ls1 = list(s1)
    ls2 = list(s2)
    i=0
    while i < len(ls1):
        if ls1[i] not in ls2[i]:
            return pref
        pref += ls1[i]
        i += 1

Tags: 字符串答案代码name文档示例hellois
1条回答
网友
1楼 · 发布于 2024-06-15 08:48:17
In [1]: from itertools import takewhile
In [2]: ''.join(a for (a, b) in takewhile(lambda (a, b): a == b, zip(t1, t2)))
Out[2]: '20180628-1'

在这里,我们将两个字符串压缩在一起,并在它们的前缀相等的情况下对它们进行迭代。在

升级版。不使用itertools的等效解决方案:

^{pr2}$

相关问题 更多 >