我试图比较Python中的两个文件,它们都包含一些单词。我希望代码在file2中查找file1中的单词,并将file1中找不到的单词作为输出放到新文件中
下面的代码是我尝试过的,但是没有任何作用。它甚至没有显示错误,所以我不知道哪里出了问题或者应该有所不同
file1 = open('C:/Users/Atal/Desktop/School/Project datas/file1.txt')
file2 = open('C:/Users/Atal/Desktop/School/Project datas/file2.txt')
fileContent = file1.read();
fileContent2 = file2.read();
loglist = file1.readlines()
loglist2 = file2.readlines()
file2.close()
line = file1.readline()
file1.close()
found = False
for line in loglist:
if line in loglist2 :
found = True
if not found:
file1 = open('C:/Users/Atal/Desktop/School/Project datas/file1.txt', 'w')
file1.write(line +"\n")
file1.close()
文件1如下所示: 彼得 简 理查德
文件2如下所示: 弗洛伊德 理查德 鲍勃
新文件应如下所示: 彼得 一月
如果有什么办法,请告诉我。提前谢谢
使用set和not in like so:
输出:
在编写代码时,您需要准确地记住在程序执行的每个步骤中每个变量所包含的内容。例如:
如果要立即覆盖
line
,为什么要使用中间语句呢?在for
循环中:因此,如果在
loglist2
中找到了来自loglist
的行,那么将变量found
设置为True
。而如果没有发生(如果found
仍然False
),则输出到file1。请注意,您没有对line
做任何其他操作,即使您做了,行file1.write(line +"\n")
也只输出一行,从不与其他行重复(或者我从您在问题中缩进代码的方式推测)所以,这里是你如何做得更正确。在阅读本文时,请注意每个变量在使用时的类型(字符串、列表等):
@johny1995,在他的回答中,做了列表理解的中间一步:
这基本上是我上面所做工作的简写:“创建一个包含
logList2
中每一行的新列表,但前提是该行没有出现在logList1
”相关问题 更多 >
编程相关推荐