计算python中的字符串差异

时间:2014-09-11 20:34:07

标签: python string difflib

我正在尝试计算python中两个字符串之间不同的字符数。理想情况下,我想要一个函数,就像在C中使用strdif一样。我在python的difflib中看到ndiff,但是返回一个Differ对象,而我想要一个简单的整数(例如:" 10011" vs" 00110"返回3)。我知道答案必须简单,但我无法弄明白而且我宁愿使用库函数而不是自己编写

1 个答案:

答案 0 :(得分:5)

s1,s2 = "10011", "00110"
print sum(a!=b for a,b in zip(s1,s2)) + abs(len(s1)-len(s2))

应该可以正常工作。

或John Clements指出

print sum(a!=b for a,b in map(None,s1,s2))

这可以避免额外的长度检查...如果字符串的长度通常相同(并且它是一个很棒的解决方案!),它会稍快一些......)

或甚至更简洁(现在它开始进入黑魔法领域,在那里足够的读者理解丢失,我可能不会建议在其他人可能看到的任何事情中实际实现它,如果你确实要确保添加很多评论)

from operator import ne
print sum(map(ne, s1, s2))