一个Python扩展模块,它封装了谷歌的DeffyMatChina补丁C++实现,用于非常快速的字符串比较。版本1.0.2修复了Mac上的生成问题。

fast-diff-match的Python项目详细描述


一个Python扩展模块,它封装了谷歌DIFF匹配补丁的C++实现,用于执行非常快的字符串比较。在

google diff match patch是一个google库,用于计算文本文件之间的差异(<;http://code.google.com/p/google-diff-match-patch>;)。它们是各种语言的实现。虽然有一个Python端口,但是在非常大的文档上运行速度很慢,而且我需要速度。我想使用C++实现,但我是Python的家伙,所以我更愿意从Python中使用它。在

谷歌的库依赖Qt 4,所以有些人用标准的C++类库改写了它,使它更便于携带。在<;https://github.com/leutloff/diff-match-patch-cpp-stl>;。在

此项目是一个Python扩展模块,用于C++ STL端口,因此Python代码 可以轻松地调用本机库。它在python2和python3中都可以工作。在

示例

第一个:

pip3 install diff_match_patch_python

然后写(这是Python 3):

^{pr2}$

该模块还提供了一个名为diff_bytes的方法,用于对字节数组执行diff。在

在python2中,这些方法被命名为diff_unicode(unicode字符串)和diff_str(strstrings)。在

如果您想确保快速得到结果,timelimit参数是以秒为单位的最长运行时间。根据googledocs,diff将在超过时间后停止工作,并返回一个有效的diff,但它可能不是最好的diff。checklines也是Google的一个东西,它可能会加快基于文本的类似于代码的过行的diff。在

diff方法还接受一个counts_only参数,默认情况下是True。将其设置为False,以使返回的值是操作元组和相应字符串的数组,而不是操作和这些字符串的长度。在

源代码构建

要从这些来源进行构建,您需要:

  • Python开发头(Debian包python-dev
  • diff match修补程序库,可以使用git submodule update --init克隆该库。在

然后使用以下方法构建二进制模块:

python setup.py install

或者您可以在构建目录中找到存储在git存储库中的预构建二进制文件。 根据您的系统是否兼容,您的里程数可能会有所不同。在

包维护人员

构建一切:

git submodule update && rm -rf build && python setup.py build && python3 setup.py build

在不安装的情况下进行测试:

PYTHONPATH=build/lib.linux-x86_64-2.7/ python test.py
PYTHONPATH=build/lib.linux-x86_64-3.4/ python3 test.py

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题