【发布时间】:2018-06-28 14:58:17
【问题描述】:
我对 python 完全陌生,我需要一些关于 difflib 的帮助。我尝试阅读文档,但对我来说理解文档并不容易。
我想比较两个字符串,我希望输出只是两个字符串之间的匹配前缀部分(不打印差异)。
例子:
t1 = "hello my name is Tom"
t2 = "hello his name is Sawyer"
预期输出为:"hello"
我尝试了以下方法,但输出不是我想要的,因为它将输出打印为数组并且不仅打印匹配部分:
#!/usr/bin/python
import difflib
t1 = "hello my name is Tom"
t2 = "hello his name is Sawyer"
seq = difflib.Differ()
seq = seq.compare(t1,t2)
print list(seq)
其他示例-2:
t1 = "20180628-153020"
t2 = "20180628-173020"
预期的输出打印输出: “20180628-1” 而后缀“3020”即使字符串的位置和字符都匹配,也应该忽略。
请帮帮我..谢谢...
2018 年 7 月 2 日更新
我编写了一个小代码来仅获取两个字符串之间前缀的相似部分(不使用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
【问题讨论】:
标签: python compare match difflib