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
将解决获取最短长度字符串的问题。