python - 如何仅从 libdiff 比较结果中过滤 delta?
问题描述
是否有任何比较方法或选项difflib
可以返回仅具有差异的行?
到目前为止,我已经尝试过Differ, HtmlDiffer, difflib.unified_diff
,即使没有差异,他们也总是从比较数据中返回所有行。
解决方案
您可以使用difflib.html.difflib.unified_diff仅获取已更改的行:
上下文行数由 n 设置,默认为 3
from itertools import islice
from difflib import unified_diff
s1 = ['line1\n', 'line2\n', 'line3\n']
s2 = ['line1\n', 'lineX\n', 'line3\n']
print(''.join(islice(unified_diff(s1, s2, fromfile='', tofile='', n=0), 3, None)))
输出:
-line2
+lineX
推荐阅读
- c - 如何解决 C 程序 int main 错误
- opengl - 在相机后面的位置进行广告牌时的伪影
- php - 当数组中有数组时,str_replace 是否完成?
- amazon-web-services - 替换从 VAST 代码返回的多个 HLS VOD 片段
- blogger - 如何检查延迟加载脚本是否适用于 Blogger 帖子中上传的图像?
- django - 在 Django 中验证复杂的关系
- pipe - 是否保证 POSIX shell 在执行管道中的任何命令之前始终打开文件进行重定向?
- c# - 如何让玩家忽略代码中与另一个游戏对象的碰撞?
- android - 使用数据绑定(Kotlin)时如何修复自定义 ArrayAdapter 下拉视图剪辑最终项目
- .net - Graphics DrawPath 在渲染文本时产生意外的结果