问题描述
简单的例子是从两个字符串中获取前缀
s1 = "abcd666678"
s2 = "abcd777778"
是否可以使用列表理解来获得公共前缀 abcd
。我正在尝试如下,但是我得到 abcd78
,所有常见字符,如何在 abcd
"".join([s1[i] for i in range(min(len(s1),len(s2))) if s1[i]==s2[i]])
解决方法
使用 itertools.takewhile
和 zip
:
>>> from itertools import takewhile
>>> ''.join(x for x,_ in takewhile(lambda t: t[0] == t[1],zip(s1,s2)))
'abcd'
,
有一个内置函数可以满足您的需求:os.path.commonprefix
>>> import os
>>> s1 = "abcd666678"
>>> s2 = "abcd777778"
>>> os.path.commonprefix([s1,s2])
'abcd'