So, using Python’s difflib, I can generate a diff of two strings:
foo = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Nullam sed orci lobortis lectus bibendum vehicula.\n Integer iaculis eros porttitor velit porttitor scelerisque.\n Nunc venenatis nibh.'.splitlines()
bar = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Mauris placerat, odio ut viverra gravida, elit leo tincidunt nisi, a pellentesque velit arcu id magna.\n Integer iaculis eros porttitor velit porttitor scelerisque.\n Nunc venenatis nibh.'.splitlines()
diff = difflib.unified_diff(foo, bar, lineterm='')
We can then check out the diff if we so desired:
>>> print '\n'.join(diff)
---
+++
@@ -1,4 +1,4 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- Nullam sed orci lobortis lectus bibendum vehicula.
+ Mauris placerat, odio ut viverra gravida, elit leo tincidunt nisi, a pellentesque velit arcu id magna.
Integer iaculis eros porttitor velit porttitor scelerisque.
Nunc venenatis nibh.
And here’s where I’m stuck. How can I apply that diff to string foo to result in string bar?
If you use ndiff then you can restore the original string using restore
Please note since unified diffs usually drops lines that compared equal to begin with it would be almost impossible to restore to the original string. ndiff shows everything, so it would be straight forward to restore the original.