get_opcodes()
Return list of 5-tuples describing how to turn a into b. Each tuple is of the form (tag, i1, i2, j1, j2)
. The first tuple has i1 == j1 ==
0
, and remaining tuples have i1 equal to the i2 from the preceding tuple, and, likewise, j1 equal to the previous j2.
The tag values are strings, with these meanings:
Value | Meaning |
---|---|
'replace' |
a[i1:i2] should be replaced by b[j1:j2] . |
'delete' |
a[i1:i2] should be deleted. Note that j1 == j2 in this case. |
'insert' |
b[j1:j2] should be inserted at a[i1:i1] . Note that i1 == i2 in this case. |
'equal' |
a[i1:i2] == b[j1:j2] (the sub-sequences are equal). |
For example:
>>> a = "qabxcd" >>> b = "abycdf" >>> s = SequenceMatcher(None, a, b) >>> for tag, i1, i2, j1, j2 in s.get_opcodes(): ... print('{:7} a[{}:{}] --> b[{}:{}] {!r:>8} --> {!r}'.format( ... tag, i1, i2, j1, j2, a[i1:i2], b[j1:j2])) delete a[0:1] --> b[0:0] 'q' --> '' equal a[1:3] --> b[0:2] 'ab' --> 'ab' replace a[3:4] --> b[2:3] 'x' --> 'y' equal a[4:6] --> b[3:5] 'cd' --> 'cd' insert a[6:6] --> b[5:6] '' --> 'f'
Please login to continue.