查找两个字符串之间差异的位置
我有两个长度相同的字符串,怎么找出它们不同的地方呢?
比如说,"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
。