检查两个帖子版本(原始版本和编辑版本)之间的帖子更改(编辑/添加/删除的文本)的最佳方法是什么?
我正在使用Markdown,所以我不确定使用difflib.HtmlDiff是否是个好主意。我的目标是用绿色背景标记添加的文本,用红色背景标记删除的文本,类似于github所做的。
试试ghdiff
GitHub 风格的 HTML,用于统一差异。它在 PyPI 上,但目前在 GitHub 上有更好的文档。你需要pip install ghdiff
。
简单的用法,假设降价在markdown1
and中markdown2
。
import ghdiff
diff_as_html = ghdiff.diff(markdown1,markdown2)
这是一个更明确的演示。假设您有这两个降价字符串:
md1 = '''
# Hello world
I am text
* No really
'''
md2 = '''
# Hi world
I am text
* No really
'''
我们可以对这些进行差异
import ghdiff
diff_as_html = ghdiff.diff(md1,md2)
渲染后,它看起来像这样:
这是 IPython Notebook 中的原始和渲染:
我使用自己在几分钟内编写的脏代码作为第一种方法。我也比较了降价本身。
我也在寻找最好的方法。
def canvis_html( before, after ):
d = ''.join(
ndiff(
before.splitlines(1),
after.splitlines(1)
)
)
estils = {'+':'color:green;', '-':'color:red;text-decoration:line-through;',}
new = u""
previous_zone = 'new'
for l in d.splitlines(1):
l=l+u" "
zona = l[0]
if zona in ( '+', '-'):
if zona != previous_zone:
#si havia obert una zona la tanco
if previous_zone != 'new': new += u"</span>"
#colorejo segons la zona
new += u"<span style='{estil};'>".format( estil = estils[zona])
previous_zone = zona
new += l[1:]
elif l.startswith( '?' ):
pass
else:
new += l[1:]
return new
在这里您可以看到编辑结果,如您所见,如果您应该自己编码,这只是一个起点。