如何比较python中的两个HTML文件并只打印差异?
我有两个从sonar生成的html报告,显示了代码中的问题 问题陈述:我需要比较两份sonar报告,找出差异,即引入的新问题。基本上需要找到html中的差异并只打印这些差异 我几乎没试过什么-如何比较python中的两个HTML文件并只打印差异?,python,html,comparison,Python,Html,Comparison,我有两个从sonar生成的html报告,显示了代码中的问题 问题陈述:我需要比较两份sonar报告,找出差异,即引入的新问题。基本上需要找到html中的差异并只打印这些差异 我几乎没试过什么- import difflib file1 = open('sonarlint-report.html', 'r').readlines() file2 = open('sonarlint-report_latest.html', 'r').readlines() htmlDiffer = difflib
import difflib
file1 = open('sonarlint-report.html', 'r').readlines()
file2 = open('sonarlint-report_latest.html', 'r').readlines()
htmlDiffer = difflib.HtmlDiff()
htmldiffs = htmlDiffer.make_file(file1, file2)
with open('comparison.html', 'w') as outfile:
outfile.write(htmldiffs)
现在,这给了我一个comparison.html,它只不过是两个html差异。它不会只打印不同的行
我是否应该尝试HTML解析,然后以某种方式将差异打印出来?请提出建议。我将尝试逐行遍历每个html文件,并检查这些行是否相同
with open('file1.html') as file1, open('file2.html') as file2:
for file1Line, file2Line in zip(file1, file2):
if file1Line != file2Line:
print(file1Line.strip('\n'))
print(file2Line.strip('\n'))
您必须处理一行中的换行符和多行差异,但这可能是一个好的开始:)如果您使用
difflib.difference
,则只能保留差异行,并使用每行写入的两个字母代码进行过滤。从:
类差异库差异
这是一个用于比较行序列的类
文本,并产生人类可读的差异或增量。不同
使用SequenceMatcher比较行序列,并
比较相似(接近匹配)行中的字符序列
不同增量的每一行都以两个字母的代码开头:
代码意义
序列1唯一的'-'行
序列2唯一的“+”行
两个序列共用的“”行
“?”两个输入序列中都不存在行
以“?”开头的行尝试将眼睛引导到行内
两种输入序列中均不存在差异。这些
如果序列包含制表符,则行可能会混淆
通过保持以“-”和“+”开头的行只是区别。我认为这对于大型
html
文件来说不是很有效,但是检查它的方法似乎很好。