Python difflib,获得偏移量

时间:2015-07-13 17:33:20

标签: python

python中是否有一种方法可以使用difflib来获取更改的偏移量以及更改本身?

我所拥有的是以下内容:

import difflib

text1 = 'this is a sample text'.split()
text2 = 'this is text two.'.split()

print list(difflib.ndiff(text1, text2))

打印:

['  this', '  is', '- a', '- sample', '  text', '+ two.']

我是否也能获得相应变化的抵消? 天真的解决方案只是搜索更改,但如果字符串使用重复的术语变得更长,那将无效。

1 个答案:

答案 0 :(得分:1)

SequenceMatcher.get_matching_blocks()可能有所帮助。它返回描述匹配子序列的三元组列表。反过来,这些指数可用于找出差异的位置。

>>> for block in s.get_matching_blocks():
...     print "a[%d] and b[%d] match for %d elements" % block
a[0] and b[0] match for 8 elements
a[8] and b[17] match for 21 elements
a[29] and b[38] match for 0 elements

https://docs.python.org/2/library/difflib.html#difflib.SequenceMatcher.get_matching_blocks https://docs.python.org/2/library/difflib.html#sequencematcher-examples