你的例子表明你想要在一对线之间进行比较。这与将其定义为line(n-1)-line(n)不同,后者将给出5个结果,而不是3个。在
结果也取决于你认为的差异。它是位置性的,还是仅仅基于奇数行中缺失的字母,还是两者的差异都适用。
(例如“boat”-“tub”=“船”,“oa”或“oa”?)。
您还必须决定是否希望差异区分大小写。在
下面是一个例子,其中差异的计算集中在一个函数中,这样您可以更容易地更改规则。它假设“船”-“浴缸”=“非统组织”。在lines = """Hey there !
Hey thre !
What a suprise.
What a uprise.
I don't know what to do.
I don't know wt to do.
""".split('\n')
def differences(word1,word2):
if isinstance(word1,list):
return "".join( differences(w1,w2) for w1,w2 in zip(word1+[""]*len(word2),word2+[""]*len(word1)) )
return "".join( c*abs(word1.count(c)-word2.count(c)) for c in set(word1+word2) )
result = [ differences(line1.split(),line2.split()) for line1,line2 in zip(lines[::2],lines[1::2]) ]
# ['e', 's', 'ha']
注意,result的行处理基于您的示例(而不是您的定义)。