查找两个字符串之间差异的位置

26 投票
7 回答
59176 浏览
提问于 2025-04-17 08:33

我有两个长度相同的字符串,怎么找出它们不同的地方呢?

比如说,"HELPMEPLZ" 和 "HELPNEPLX" 在第4个和第8个位置上是不同的。

7 个回答

6

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,不知道该怎么解决。比如,有人可能在使用某个特定的功能时,发现它并没有按照预期的方式工作。这种情况下,我们通常会去网上寻找答案,比如在StackOverflow这样的论坛上提问或查找相关信息。

在这些讨论中,大家会分享他们的经验和解决方案,帮助彼此解决问题。通过这些交流,我们可以学到很多实用的技巧和知识,逐渐提高自己的编程能力。

总之,遇到问题时,不要害怕去寻求帮助,很多人都曾经历过类似的困扰,大家一起讨论就能找到解决办法。

>>> from itertools import izip
>>> s1 = 'HELPMEPLZ'
>>> s2 = 'HELPNEPLX'
>>> [i for i,(a1,a2)  in enumerate(izip(s1,s2)) if a1!=a2]
[4, 8]
26

Python真的是自带很多功能的。你可以看看difflib这个模块。

>>> import difflib
>>> a='HELPMEPLZ'
>>> b='HELPNEPLX'
>>> s = difflib.SequenceMatcher(None, a, b)
>>> for block in s.get_matching_blocks():
...     print block
Match(a=0, b=0, size=4)
Match(a=5, b=5, size=3)
Match(a=9, b=9, size=0)

difflib功能非常强大,建议你花点时间去了解一下它的文档。

33

试试这个:

s1 = 'HELPMEPLZ'
s2 = 'HELPNEPLX'
[i for i in xrange(len(s1)) if s1[i] != s2[i]]

它会返回:

> [4, 8]

上面的解决方案会返回一个按顺序排列的索引列表,不会创建任何多余的中间数据结构,并且适用于Python 2.3到2.7版本。如果你使用的是Python 3.x,请把 xrange 替换成 range

撰写回答