Skip to main content
 首页 » 编程设计

查找在 2 个字符串中不匹配的第一个索引的 pythonic 方法

2025年05月04日19dudu

我想知道两个字符串在哪个索引处停止匹配。

例如:

a = "happy birthday" 
b = "happybirthday" 

字符串 a 和 b 在索引 5(基于 0)上停止匹配。

我知道我可以这样写我的方法:

  def compare_2_string(a, b): 
    for x in xrange(len(a)): 
      if a[x] != b[x]: 
        return x 

但是是否有更短、简洁或 pythonic 的方式来执行相同的逻辑?

请您参考如下方法:

使用difflib :

>>> s1 = "happy birthday" 
>>> s2 = "happybirthday" 
>>> s = difflib.SequenceMatcher(None, s1, s2) 
>>> m = s.get_matching_blocks() 
>>> print m[0][2] 
5 

(m 是一个元组列表,每个元组的第三个元素是匹配 block 的大小。在实际代码中,您需要确保确实存在匹配项等等)