我试图从两组列表中找到重叠列表。 我首先通过
生成第一个列表while True:
line=f.readline()
if not line:
break
list_1.append(line)
并使用此列表扫描第二个文件:
while True:
line1=f1.readline()
if not line1:
break
for i in list_1:
if i==line1[:17]:
list_2.append(line1)
答案 0 :(得分:4)
ThiefMaster答案将以任意顺序输出公共线。如果您希望输出的项目与其中一个文件中显示的顺序相同,请先将其他文件读入一个集合中:
with open("file1.txt") as f:
file1_set = set(f)
然后搜索控制订单的文件:
with open("file2.txt") as f:
list2 = [line for line in f if line in file1_set]
如果生成的list2
不适合内存(我猜这是相当遥远的),我们仍然可以通过将结果连续写回输出文件来使其工作:
with open("file2.txt") as f:
with open("out.txt", "w") as out:
for line in f:
if line in file1_set:
out.write(line)
答案 1 :(得分:3)
只要没有任何文件过大,请将所有行存储在sets中,然后比较这些集:
lines_1 = set(f)
lines_2 = set(f1)
lines_in_both = lines_1 & lines_2
答案 2 :(得分:2)
如果您尝试在两个文件中找到差异,您还可以使用difflib模块,该模块包含在python标准库中。该模块提供用于比较序列的类和函数。它可以用于例如比较文件,并且可以以各种格式产生差异信息,包括HTML和上下文以及统一差异。您可以在difflib documentation中找到有用的比较方法。
difflib.SequenceMatcher(None, file1.read(), file2.read())