-
Notifications
You must be signed in to change notification settings - Fork 18
[python] difflib, show differences between two strings
Myungchul Shin edited this page Apr 22, 2015
·
1 revision
def show_diff(text, n_text):
"""
http://stackoverflow.com/a/788780
Unify operations between two compared strings seqm is a difflib.
SequenceMatcher instance whose a & b are strings
"""
seqm = difflib.SequenceMatcher(None, text, n_text)
output= []
for opcode, a0, a1, b0, b1 in seqm.get_opcodes():
if opcode == 'equal':
output.append(seqm.a[a0:a1])
elif opcode == 'insert':
output.append("<font color=red>^" + seqm.b[b0:b1] + "</font>")
elif opcode == 'delete':
output.append("<font color=blue>^" + seqm.a[a0:a1] + "</font>")
elif opcode == 'replace':
# seqm.a[a0:a1] -> seqm.b[b0:b1]
output.append("<font color=green>^" + seqm.b[b0:b1] + "</font>")
else:
raise RuntimeError, "unexpected opcode"
return ''.join(output)