一个Python扩展模块,它封装了谷歌的DeffyMatChina补丁C++实现,用于非常快速的字符串比较。
diff_match_patch_python_python2_fork的Python项目详细描述
一个Python扩展模块,它封装了谷歌DIFF匹配补丁的C++实现,用于执行非常快的字符串比较。
google diff match patch是一个用于计算文本文件之间差异的google库(<;http://code.google.com/p/google-diff-match-patch>;)。它们是各种语言的实现。虽然有一个python端口,但它在处理非常大的文档时速度很慢,而且我需要速度。我想使用C++实现,但是我是一个Python的家伙,所以我更喜欢使用Python。
@ LuttLoF通过用标准C++库原语替换Qt 4依赖性,确定C++端口可以更快。所以他在<;https://github.com/leutloff/diff-match-patch-cpp-stl>;重新编写了这个模块。
这个项目是python的一个扩展模块,使用@leutloff的库,所以python代码 可以很容易地调用本机库。它在python 2和python 3中都可以工作。
示例
第一个:
pip3 install diff_match_patch_python
然后编写(这是python 3):
from diff_match_patch import diff changes = diff("Hello world.", "Goodbye moon.", timelimit=0, checklines=False) for op, length in changes: if op == "-": print ("next", length, "characters are deleted") if op == "=": print ("next", length, "characters are in common") if op == "+": print ("next", length, "characters are inserted")
该模块还提供了一个名为diff_bytes的方法,用于对字节数组执行diff。
在python 2中,这些方法被命名为diff_unicode(unicode字符串)和diff_str(str字符串)。
^ {tT4}$参数是如果您想确保结果来得很快,则以秒为单位的最大运行时间。根据google文档,diff将在超过时间后停止工作,并返回有效的diff,但它可能不是最好的diff。checklines也是google的一项功能,它可能会加速基于文本(如代码)的区分。
diff方法还接受一个counts_only参数,默认为True。将其设置为False,以使返回值是操作元组和相应字符串的数组,而不是操作和这些字符串的长度。
依赖关系
要从源代码构建,您需要:
- python开发头文件(debian包python-dev)
- diff匹配修补程序库,可以使用git submodule update --init克隆它。
构建
使用:
python setup.py install
或者您可以在构建目录的git存储库中找到预构建的二进制文件。 根据您的系统是否兼容,您的里程可能会有所不同。