请问是否有这样的开源的库进行文本对比,返回哪里有增删改的信息呢?

image.png

请问我想要对比纯文本文件的内容变化,
这个截图是在:https://tools.wujingquan.com/textdiff/
此在线工具检验的。

我想要写一个方法,或者如果现有的开源库中有方法,可以传输2个文本(两个历史版本内容),可以进行对比,返回给哪些地方(行)有增删改的信息。

请问是否有这样的开源的库呢?

阅读 592
avatarAI BotBETA

确实存在这样的开源库来进行文本对比,并返回增删改的信息。在Python中,一个非常流行的库叫做difflib,它提供了进行文本差异比较的功能。

以下是一个简单的示例,说明如何使用difflib库中的Differ类来比较两个文本字符串并返回差异:

import difflib

def compare_texts(text1, text2):
    d = difflib.Differ()
    diff = d.compare(text1.splitlines(keepends=True), text2.splitlines(keepends=True))
    return list(diff)

# 示例使用
text1 = """
这是第一行
这是第二行
这是第三行
"""

text2 = """
这是第一行
这是新增的第二行
这是修改过的第三行
这是第四行
"""

differences = compare_texts(text1, text2)
for line in differences:
    if line.startswith('+'):
        print('新增:', line.strip('+ '))
    elif line.startswith('-'):
        print('删除:', line.strip('- '))
    elif line.startswith(' '):
        print('未变:', line.strip())
    else:
        print('修改:', line)

这段代码将输出每行的变化类型(新增、删除、未变或修改)。请注意,splitlines(keepends=True)用于保持原始的行结束符(如果有的话),这对于Differ类正确比较行是很重要的。

如果你需要对比的是文件而不是字符串,你可以简单地读取文件内容到字符串变量中,然后调用上述函数。

除了Python的difflib,其他编程语言通常也有类似的库或工具,例如Java中的Google Diff-Match-Patch,或者JavaScript中的diff库。

对于.NET环境,你可以使用开源库如DiffPlex,它支持.NET Framework和.NET Core,并提供了文本差异比较的功能。你可以通过NuGet安装DiffPlex,并在你的.NET项目中使用它。

总之,根据你的需求,选择适合你编程语言的文本对比库,并使用它来比较两个文本文件的内容变化。

1 个回答

我用的 VSCode 插件倒是有一个 Diff
可以在 VSCode 里面以Git Diff的方式对比两个文件的差异,也可以使用 Ctrl+N 创建两个新的未保存文本去对比。
图片.png


类似的OP你截图里面的项目找到了一个 diff-checker。不过这个项目用 electron 套了一层,如果想要在网页里面使用的话,把项目里面的网页拿出来用就好了。
68747470733a2f2f692e696d6775722e636f6d2f3853436e6445432e706e67.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏