You can use difflib.SequenceMatcherfor this:
import difflib
def merge (l, r):
m = difflib.SequenceMatcher(None, l, r)
for o, i1, i2, j1, j2 in m.get_opcodes():
if o == 'equal':
yield l[i1:i2]
elif o == 'delete':
yield l[i1:i2]
elif o == 'insert':
yield r[j1:j2]
elif o == 'replace':
yield l[i1:i2]
yield r[j1:j2]
Used as follows:
>>> string1 = 'This is a test trees are green roses are red'
>>> string2 = 'This iS a TEST trees 12.48.1952 anthony gonzalez'
>>> merged = merge(string1.lower().split(), string2.lower().split())
>>> ' '.join(' '.join(x) for x in merged)
'this is a test trees are green roses are red 12.48.1952 anthony gonzalez'
, ( ):
>>> merged = merge(string1.lower(), string2.lower())
>>> ''.join(merged)
'this is a test trees 12.48.1952 arenthony gronzaleen roses are redz'
. , , , . , A B D A C D A B C D.
, , . C , ; B , . .