Python 比较文本文件列表索引超出范围

Python 比较文本文件列表索引超出范围,python,compare,text-files,Python,Compare,Text Files,我有两个包含URL的文本文件。我正在尝试比较这两个文件并打印链接(如果两个文件中都存在)。代码为: file1 = open('urllist.txt','r') file2 = open('test.txt','r') file2rl = file2.readlines() file1rl = file1.readlines() for i in (0,len(file1rl)): for j in (0,len(file2rl)): if (file1rl[i] == file

我有两个包含URL的文本文件。我正在尝试比较这两个文件并打印链接(如果两个文件中都存在)。代码为:

file1 = open('urllist.txt','r')
file2 =  open('test.txt','r')

file2rl = file2.readlines()
file1rl = file1.readlines()

for i in (0,len(file1rl)):
 for j in (0,len(file2rl)):
  if (file1rl[i] ==  file2rl[j]):
   print file1rl[i]
  else:
   continue
但我得到的错误是:

if (file1rl[i] ==  file2rl[j]):
IndexError: list out of range 

任何帮助都非常有用

您必须执行
范围

for i in range(0,len(file1rl)):
    for j in range(0,len(file2rl)):

如果您在没有范围的情况下执行此操作,它将只在
i
上作为
元组的元素进行迭代
(0,len(file1rl))
,这不是您想要的。

除非您的文件很大,否则使用集合查找交点会容易得多:

 print set(file('urllist.txt')) & set(file('test.txt'))

现在使用的算法将第一个文件中的每一行与第二个二次性能文件中的每一行进行比较

您只是忘记了范围(0,len(file1rl))中i的
范围

一些提示:

你可以这样做:

for i in file1rl:
 for j in file2rl:
  if (i ==  j):
甚至,你也可以用

[item for item in file1rl if item in file2rl]
编辑: @乔治用
set
技巧指出了一个很好的技巧


如果您熟悉
diff

我会使用
集合
来实现高效查找,您也可以查看模块的:

with open('urllist.txt', 'r') as f:
    urls = set(f.readlines())
with open('test.txt','r') as f:
    for line in f:
        if line in urls:
            print(line.strip())

正如@sshashank124所说,
range
将解决您的错误。但这是一种更具python风格的方式:

for file1line in file1rl:
    for file2line in filr2rl:
        if file1line == file2line:
            print file1line

这绝对是最好的!