我同时从两个具有相同内容的文本文件(单词列表)中读取行。你知道吗
peach
carrot
apple
lemon
我想检查这两条同时发生的线路是否相同。如果不是,则总相似度降低。由于这两个文件是相同的,检查身份应该会导致100%的相似性。相反,我得到了0%。你知道吗
from itertools import izip, izip_longest
with open(r'file1.txt', "rb") as f1, open(r'file2.txt', "rb") as f2:
#initialize numerator & denominator values for calculating file similarity
nTotal = 4 #total number of lines in each file
nIdent = nTotal
for line1, line2 in izip_longest(f1, f2):
if((line1 is line2) is False):
nIdent -=1
similarity = nIdent/nTotal
为什么线条不一样?你知道吗
你必须改变:
签署人:
在Python中比较
string
对象时,不能使用is
运算符,因为在大多数解释器实现中,相同的字符串通常表示为不同的对象。你知道吗is
运算符返回True
如果要比较的对象相同,而不是如果对象的值相同,这是您需要的最后一种情况。你知道吗在某些解释器实现中,具有相同值的字符串可以在共享同一对象的情况下实现,但这不是您应该信任的脚本:
上面的例子完全依赖于实现,将来可能会有所不同。您应该通过不可变对象的值来比较它,而不是通过它的对象id(这就是
is
操作符所做的)。你知道吗你的比较
line1 is line2
与line1 == line2
不同。对象不是相同的,但它们所代表的数据是相同的。你知道吗相关问题 更多 >
编程相关推荐