python标准库difflib介绍
简介
从python2.3起difflib成为了标准库。无需安装即可使用。
之前遇到一个问题,我本地的代码没有问题,而服务器上的则一直报404错误。肉眼对比了一下路径,感觉是完全一样的。在网上找了下字符串对比工具,没有一个好用。
后来还是有个同事眼力好,发现有个一字符的大小写问题导致的。那会如果知道python有difflib库的话,早就把问题解决了。
简单的对比
以下示例是一个相当简单的代码。
import difflib
text1 = """
"""
text2 = '''
'''
text1_lines = text1.splitlines()
text2_lines = text2.splitlines()
d = difflib.Differ()
diff = d.compare(text1_lines, text2_lines)
print('\n'.join(list(diff)))
输出示例:
Template Name: Metronic – Responsive Admin Dashboard Template build with Twitter Bootstrap 3.3.6
– Version: 4.5.4
? ^
Version: 4.5.5
? ^
Author: alston
Author: KeenThemes
Purchase: http://themefrest.net/item/metronic-responsive-admin-dashboard-template/4021469?ref=keenthemes
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
–>
看着真是费劲,-,+,?,。能感觉出来-是少了,+是增加了,?和表示存在差异。
试试html美化的
修改比较简单。只要把
d = difflib.Differ()
diff = d.compare(text1_lines, text2_lines)
print('\n'.join(list(diff)))
替换成
d = difflib.HtmlDiff()
print(d.make_file(text1_lines, text2_lines))
即可。
看着还不错。会用颜色标识出来。
更多对比工具
标准库里还有个filecmp库,支持单文件对比,多文件对比,目录对比。
Tags:原创