lxml может сделать что-то похожее на то, что вы хотите. Из документов:
>>> from lxml.html.diff import htmldiff
>>> doc1 = '''<p>Here is some text.</p>'''
>>> doc2 = '''<p>Here is <b>a lot</b> of <i>text</i>.</p>'''
>>> print htmldiff(doc1, doc2)
<p>Here is <ins><b>a lot</b> of <i>text</i>.</ins> <del>some text.</del> </p>
Я не знаю какой-либо другой библиотеки Python для этой конкретной задачи, но вы можете посмотреть пословные различия. Они могут приближаться к тому, что вы хотите.
Один из примеров - , этот , реализованный на PHP и Python (сохраните его как diff.py
, затем import diff
)
>>> diff.htmlDiff(a,b)
>>> '<del><p>i</del> <ins><h2>i</ins> love <del>it</p></del> <ins>it </p></ins>'