3

I am using the difflib.HtmlDiff class, calling the function using two sets of text (HTML from websites), however when it makes the table

html_diff = difflib.HtmlDiff()
print html_diff.make_table(previous_contents, fetch_url.page_contents)

however that just seems to compare char by char (1 char per table row), and I end up with a 4.3MB txt file for two sets of html which are only 100k.

The doc file says,

Compares fromlines and tolines (lists of strings) and returns a string which is a 
complete HTML file containing a table showing line by line differences with 
inter-line and intra-line changes highlighted.

however that doesn't seem to be the case.

Any suggestions?

miku
  • 181,842
  • 47
  • 306
  • 310
Wizzard
  • 12,582
  • 22
  • 68
  • 101

1 Answers1

6

You're supplying strings, not lists of strings (lines).

Assuming UNIX or Windows line ends:

print html_diff.make_table(previous_contents.split('\n'),
                           fetch_url.page_contents.split('\n'))
phihag
  • 278,196
  • 72
  • 453
  • 469
  • Your answer was useful to me thank you. Do you know how we can reduce width of output diff (it shows a very wide width of both first and second file) ? – msashish Jul 12 '20 at 03:40
  • @msashish That sounds like an unrelated question. Go [ask it](https://stackoverflow.com/questions/ask)! If you want, you can [drop me an email or message](https://phihag.de/) with the URL. – phihag Jul 12 '20 at 08:07
  • I found the answer. Constructor difflib.HtmlDiff() can take wrapcolumn parameter..thanks anyways – msashish Jul 16 '20 at 07:11