简化之后的测试代码在下面
对两段比较相似的 CSS 代码进行相似度检测,difflib.SequenceMatcher(None, css1, css2).ratio() 使用这个函数检测的时候,css1 和 css2 参数位置换一下,结果相似度居然一个是 97%,一个 18%,差点产生了一条漏网之鱼。加上 autojunk=False 可以解决这个问题,但是这个检测速度太慢了,所以初步估计应该是这个“自动垃圾启发式计算”的问题,但是具体原因没有深究,有人遇到过同样的问题吗?
import difflib
css1 = '''
.header img{
height: 35px;
}
.header{
display: flex;
margin-bottom: 15px;
justify-content: space-between;
}
.header-content{
align-items: center;
margin-left: 20px;
}
.photo1{
text-align: center;
}
.photo img{
height:30px;
}
.container{
width: 750px;
margin-left: auto;
margin-right: auto;
}
.cc{
justify-content: space-between;
display: flex;
}
'''
css2 = '''
.header img{
height: 30px;
}
.header{
display: flex;
margin-bottom: 10px;
justify-content: space-between;
}
.header-content{
align-items: center;
margin-left: 20px;
}
.photo1{
text-align: center;
}
.photo img{
height:30px;
}
.container{
width: 700px;
margin-left: auto;
margin-right: auto;
}
.po{
justify-content: space-between;
display: flex;
}
'''
ratio1 = difflib.SequenceMatcher(None, css1, css2).ratio()
ratio2 = difflib.SequenceMatcher(None, css2, css1).ratio()
print(ratio1)
print(ratio2)
''' 下面是输出结果
0.969173859432799
0.18249075215782984
'''