比较以下使用difflib.ndiff()
from difflib import unified_diff, ndiff
print("".join(ndiff(
["aba\n"],
["abbba\n"]
)))
print("".join(ndiff(
["aba\n"],
["abbbba\n"]
)))
输出:
- aba
+ abbba
? ++
- aba
+ abbbba
第一个指出必须添加字符的位置,而第二个基本放弃并替换整行。
如何将第二张打印出来
相当于
"您需要插入3' [这里]。" ?
第二次印刷的预期输出:
- aba
+ abbbba
? +++
答案 0 :(得分:1)
是否显示差异的视觉朦胧是基于两个弦的匹配率为0.75或更高的确定。你的第一个例子是0.80,你的第二个例子大约是0.72,没有得到高手。
没有提供调整此阈值的方法 - 但difflib
是在纯Python中实现的;您可以从Python库中复制difflib.py并将其修改为您想要的行为。 (至少在Python 2.7中,阈值接近名为_fancy_replace
的方法的顶部。)
您还可以通过用空格填充所有字符串来伪造现有的difflib,以便它们的匹配率更高。例如,如果将两个字符串添加到10个空格,则可以将aba
与abbbbbbbbbba
进行比较,但仍然可以获得差异。