从两个不同的文件中读取行,如果找到匹配则打印行号[编辑]

时间:2016-09-24 04:45:40

标签: python python-2.7 text

我有两个文件。我想从file1读取每一行,并检查它是否与file2中的任何行匹配。我希望在file1中为每一行重复此操作,并打印在file2中找到匹配的file1的行号。到目前为止,我有这个。它适用于每个4-5行的测试文件,但是当处理超过60k行的大文件时,我得到一个空白输出

    num=0
    f1 = open('pdataf.txt', 'r')
    f2 = open('splitc.txt', 'r')
    fo = open('op.txt', 'w')
    for line1 in f1:
        for line2 in f2:
            num=num+1
            if line1==line2:
                nummy=str(num)
                fo.write(nummy)
                fo.write('\n')
                break
        continue
    f1.close()
    f2.close()

1 个答案:

答案 0 :(得分:0)

首先,第8行有语法错误,将行替换为print(num)。 我没有关于你的问题的很多信息,澄清可能是一个好主意,但我怀疑发生的是你在你阅读的行的末尾有一个结束行字符"\n"。 / p>

要摆脱这个角色,您可以使用this topic中讨论的rstrip()方法。

所以,我建议用以下代码替换你的代码:

num=0
f1 = open('s.txt', 'r')
f2 = open('p.txt', 'r')
for line1 in f1:
    line1 = line1.rstrip()
    for line2 in f2:
        line2 = line2.rstrip()
        if line1==line2:
            num=num+1
            print(num)
f1.close()
f2.close()