'''A suggested first step''' Is it possible to read the Python code and to establish what the algo is in plain words? ex: Step one: define the variable ----- /def diff(s1, s2) : from difflib import SequenceMatcher s1 = s1.replace('&', '&') s1 = s1.replace('<', '<') s2 = s2.replace('&', '&') s2 = s2.replace('<', '<') seq1 = s1.splitlines() seq2 = s2.splitlines() seqobj = SequenceMatcher(None, seq1, seq2) linematch = seqobj.get_matching_blocks() if len(seq1) == len(seq2) \ and linematch[0] == (0, 0, len(seq1)) : # No differences. return 'No differences.' lastmatch = (0, 0) end = (len(seq1), len(seq2)) result = "\n" for match in linematch : # Print all differences. if lastmatch == match[0:2] : # Starts of pages identical. lastmatch = (match[0] + match[2], match[1] + match[2]) continue result = result \ + "\n" leftpane = '' rightpane = '' linecount = max(match[0] - lastmatch[0], match[1] - lastmatch[1]) for line in range(linecount) : if line < match[0] - lastmatch[0] : if line > 0 : leftpane += '\n' leftpane += seq1[lastmatch[0] + line] if line < match[1] - lastmatch[1] : if line > 0 : rightpane += '\n' rightpane += seq2[lastmatch[1] + line] charobj = SequenceMatcher(None, leftpane, rightpane) charmatch = charobj.get_matching_blocks() if leftpane == '' and rightpane == '' : ratio = 1.0 else : ratio = charobj.ratio() if ratio < 0.5 : # Insufficient similarity. if len(leftpane) != 0 : leftresult = "" + leftpane + "" else : leftresult = '' if len(rightpane) != 0 : rightresult = "" + rightpane + "" else : rightresult = '' else : # Some similarities; markup changes. charlast = (0, 0) charend = (len(leftpane), len(rightpane)) leftresult = '' rightresult = '' for thismatch in charmatch : if thismatch[0] - charlast[0] != 0 : leftresult = leftresult \ + "" \ + leftpane[charlast[0]:thismatch[0]] \ + "" if thismatch[1] - charlast[1] != 0 : rightresult = rightresult \ + "" \ + rightpane[charlast[1]:thismatch[1]] \ + "" leftresult = leftresult \ + leftpane[thismatch[0]:thismatch[0] + thismatch[2]] rightresult = rightresult \ + rightpane[thismatch[1]:thismatch[1] + thismatch[2]] charlast = (thismatch[0] + thismatch[2], thismatch[1] + thismatch[2]) leftpane = leftresult.replace('\n', '
\n') rightpane = rightresult.replace('\n', '
\n') result = result \ + "\n" lastmatch = (match[0] + match[2], match[1] + match[2]) result = result + '
" \ + "Line " + str(lastmatch[0] + 1) + ", removed:" \ + "" \ + "Line " + str(lastmatch[1] + 1) + ", added:" \ + "
" \ + leftpane \ + "" \ + rightpane \ + "
\n' return result import sys file1 = file(sys.argv[1]) file2 = file(sys.argv[2]) str1 = file1.read() str2 = file2.read() file1.close() file2.close() print diff(str1, str2) ---- ''What on '''earth''' is the use of this page? -[jcw]'' ''Don't you know??? [There is a huge need for a diffs module!]'' Ah, of course. Thanks for reminding me. Silly me. Shall I insert the above into wikit? :o) ... -[jcw]