Как я могу отформатировать вывод Python difflib.HtmlDiff, чтобы сделать его читабельным?

Я пытаюсь вывести разницу между двумя текстовыми файлами, используя библиотеку difflib в Python 2, с функцией HtmlDiff для создания html-файла.

V1 = 'This has four words'
V2 = 'This has more than four words'

res = difflib.HtmlDiff().make_table(V1, V2)

text_file = open(OUTPUT, "w")
text_file.write(res)
text_file.close()

Однако выходной html выглядит в браузере так:

введите здесь описание изображения

Дисплей сравнивает каждый символ, что делает его совершенно нечитаемым.

Что я должен изменить, чтобы сравнение было более удобным для человека? (например, полные предложения с каждой стороны)

Если на входе указаны «строки», то выходные данные также форматируются с учетом строк, но не отображают различий:

V1 = ['This has four words']
V2 = ['This has more than four words']

res = difflib.HtmlDiff().make_table(V1, V2)

text_file = open(OUTPUT, "w")
text_file.write(res)
text_file.close()

Результирующий html (при просмотре в браузере):

введите здесь описание изображения


person hirschme    schedule 25.05.2020    source источник
comment
Вы похоже читаете V1 из файла открытого с кодировкой utf-8, чтение-чтение файла в V1 открытого без кодировки. Вы уверены, что вам нужно и то, и другое? То же самое для V2?   -  person barny    schedule 25.05.2020
comment
@barny спасибо, это была ошибка, я удалил первые строки открытия файла   -  person hirschme    schedule 25.05.2020
comment
Хорошо, это, вероятно, объясняет отсутствие декодирования utf-8, потому что вы удалили кодировку при открытии. Вы используете Python 3, не так ли? Если вы дадите коду простой простой текст ascii для сравнения, будет ли он лучше на выходе?   -  person barny    schedule 25.05.2020
comment
@barny, который действительно решил проблему кодирования, однако вывод по-прежнему имеет ту же проблему. Я обновил код, чтобы он был понятнее и проще для воспроизведения (это python 2).   -  person hirschme    schedule 25.05.2020
comment
«Не отображать различия» — значит, вы хотите разметку? Попробуйте stackoverflow.com/questions/774316/   -  person barny    schedule 25.05.2020


Ответы (2)



Проблема в том, что у вас нет необходимых стилей. Попробуйте использовать make_file вместо make_table, тогда вы увидите, что есть некоторый CSS, который заставит цвета отображаться так, как вы ожидаете.

person Randomibis    schedule 09.07.2021