2024-09-30 00:23:04 发布
网友
我一直在使用Pythondifflib库来查找两个文档的不同之处。Differ().compare()方法可以做到这一点,但它的速度要比diff命令慢至少100倍。在
如何有效地确定Python中两个文档的不同之处?(理想情况下,我要查找的是位置,而不是实际的文本,这是SequenceMatcher().get_optcodes()返回的内容。)
a = open("file1.txt").readlines() b = open("file2.txt").readlines() count = 0 pos = 0 while 1: count += 1 try: al = a.pop(0) bl = b.pop(0) if al != bl: print "files differ on line %d, byte %d" % (count,pos) pos += len(al) except IndexError: break
一个丑陋而愚蠢的解决方案:如果diff更快,就使用它;通过subprocess从python调用,解析命令输出以获得所需的信息。这不会像diff那么快,但可能比difflib快。在
diff
subprocess
difflib
Google有一个用于纯文本的diff library和pythonapi,它应该应用于您想要使用的html文档。我不确定它是否适合您的特定用例,您对差异的位置特别感兴趣,但值得一看。在
一个丑陋而愚蠢的解决方案:如果
diff
更快,就使用它;通过subprocess
从python调用,解析命令输出以获得所需的信息。这不会像diff
那么快,但可能比difflib
快。在Google有一个用于纯文本的diff library和pythonapi,它应该应用于您想要使用的html文档。我不确定它是否适合您的特定用例,您对差异的位置特别感兴趣,但值得一看。在
相关问题 更多 >
编程相关推荐