我有两个文件。文件 A 在每行中都有一些条目,我需要查找文件 B 中是否找到任何条目。这是我的脚本(使用两个函数):
def readB(x):
with open('B.txt') as resultFile:
for line in resultFile:
if x in line:
print x
def readA():
with open('A.txt') as bondNumberFile:
for line in bondNumberFile:
readB(line)
readA()
此脚本查找第二个文件中的第一个条目,然后找不到下一个条目。这可能有什么问题?
文件A如下所示:
122323
812549
232335
921020
和文件B看起来像这样:
696798 727832 750478 784201 812549 838916 870906 890988 921020
697506 727874 751037 784955 813096 838978 872494 891368 921789
696798 727832 750478 784201 812549 838916 870906 890988 921020
697506 727874 751037 784955 813096 838978 872494 891368 921789
答案 0 :(得分:1)
您不一定需要定义执行此操作的函数
with open('a.txt') as a, open('b.txt') as b:
result = set(a.readlines()) & set(b.readlines())
如果它们都有相同的行,它将在一组中返回它们。
如果真的想要一个功能,你可以像这样写
def compare(file1: str, file2: str) -> set:
with open(file1) as f1, open(file2) as f2:
return set(f1.readlines()) & set(f2.readlines())
答案 1 :(得分:1)
Python在您阅读行时包含换行符 - 您的第一个条目读为1223232\n
。剥去换行符,它会起作用。
def readA():
with open('A.txt') as bondNumberFile:
for line in bondNumberFile:
readB(line.rstrip())