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.