【问题标题】:percentage difference between two text files两个文本文件之间的百分比差异
【发布时间】:2010-11-23 00:18:25
【问题描述】:

我知道我可以使用 cmp、diff 等来比较两个文件,但我正在寻找的是一个实用程序,它可以为我提供两个文件之间的百分比差异。

如果没有这样的实用程序,任何算法也可以。我读过关于模糊编程的书,但我不是很了解。

【问题讨论】:

  • 你如何定义“百分比差异”?您如何解释丢失、多余和交换的字符/单词/行?
  • 文件中不会有任何交换的字符或单词或行。这两个文件是日志文件,一个日志文件是所有的日志文件,这意味着系统运行良好。每小时都会写入新日志。所以我想将新写入的日志与标准日志进行比较。如果新日志与标准日志不同,则邮寄给 {X} 级支持工程师。现在清楚了吗?

标签: python linux algorithm language-agnostic


【解决方案1】:

你可以使用 difflib.SequenceMatcher ratio 方法

来自文档:

返回一个度量 序列作为浮点数的相似性 范围 [0, 1]。

例如:

from difflib import SequenceMatcher
text1 = open(file1).read()
text2 = open(file2).read()
m = SequenceMatcher(None, text1, text2)
m.ratio()

【讨论】:

  • 这是一个很好的答案,但我确实发现它运行起来可能很慢。如果您查看文档,可以使用 m.quick_ratio() 或 m.real_quick_ratio() 作为更便宜的选项,但准确性较低。
【解决方案2】:

看起来 Linux 有一个名为 dwdiff 的实用程序,它可以通过使用“-s”标志给出百分比差异

http://www.softpanorama.org/Utilities/diff_tools.shtml

【讨论】:

    【解决方案3】:

    Beyond Compare 有非常好的文件差异统计导出到 csv。报告了行级别的差异,因此可以比较源代码文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      相关资源
      最近更新 更多