Python 在不同长度的字符串中查找不同的字符

Python 在不同长度的字符串中查找不同的字符,python,Python,我有一些代码来找出字符串之间的差异。目前,它适用于相同长度的字符串,但我正试图让它适用于不同长度的字符串。我该怎么做 我添加了一个新变量longest\u seq,试图解决这个问题,但我不知道如何使用它 ref_seq = "pandabears" map_seq = "pondabear" longest_seq = map_seq if len(ref_seq) > len(map_seq): longest_seq == ref_seq for i in range(l

我有一些代码来找出字符串之间的差异。目前,它适用于相同长度的字符串,但我正试图让它适用于不同长度的字符串。我该怎么做

我添加了一个新变量
longest\u seq
,试图解决这个问题,但我不知道如何使用它

ref_seq = "pandabears"
map_seq = "pondabear"
longest_seq = map_seq

if len(ref_seq) > len(map_seq):
    longest_seq == ref_seq


for i in range(len(longest_seq)):
    if ref_seq[i] != map_seq[i]: 
        print i, ref_seq[i], map_seq[i]

对于Python2,您可以使用
itertools.izip
实现以下目的:

from itertools import izip

for i, j in izip(ref_seq, map_seq):
    if i != j: 
        print i, j
输出:

a o
在Python 3中,您可以使用内置的
zip
函数:

for i, j in zip(ref_seq, map_seq):
    if i != j: 
        print(i, j)

Python2中存在
zip
,但建议使用
itertools.izip
,因为在Python3中,它根据需要生成元组(在每次迭代中生成一个新元组),而不是一次生成所有元组,
zip
做了Python 2中的
itertools.izip
做的事情。

类似这样的东西应该可以做到这一点

def different_characters(reference, target):
    # So we don't accidentally index the shorter string past its ending
    ending = min(len(reference), len(target))

    for i in range(ending):
        if reference[i] != target[i]:
            print(i, reference[i], target[i])

    longer_str = reference if len(reference) > len(target) else target
    for i in range(ending, len(longer_str)):
        print(i, longer_str[i], '<empty>')


different_characters('pandabears', 'pondabear')
def不同的字符(参考,目标):
#因此,我们不会意外地将较短的字符串索引到其结尾
结束=最小值(len(参考),len(目标))
对于范围内的i(结束):
如果参考[i]!=目标[i]:
打印(i,参考[i],目标[i])
如果len(reference)>len(target)else目标,则longer_str=参考
对于范围内的i(结束,len(更长的_str)):
打印(i,更长的字符[i],“”)
不同的_字符('pandabear','pondabear')
将打印:

1 a o
9 s <empty>
1ao
9秒

您能否更清楚地了解查找两个字符串之间的“差异”意味着什么?一种常见的计算方法是编辑距离:。您当前的代码看起来像是在打印字符,如果字符在某个特定位置不同。@kingkupps打印在某个特定位置不同的字符就是我要做的。很抱歉造成混淆。我如何编辑代码以使其在不同长度的字符串上工作?@wilberox对于不同长度的字符串会发生什么
zip
将解决获取最短长度字符串的问题。