比较Python中的2个文件

时间:2015-03-13 17:49:00

标签: python

我正在尝试比较两个文件并在其后添加一些信息。

我的文件1看起来像:

1   234 332     4   
2   345 435     6
3   546 325     3
4   984 493     9

我的文件2看起来像

1   234 332     a   b   c   d   
2   345 435     a   b   c   d
4   984 493     a   b   c   d

我想要以下输出

1   234 332     4   a   b   c   d
2   345 435     6   a   b   c   d  
4   984 493     9   a   b   c   d

换句话说: 我想比较第1,2和3列。如果它们相等,我想要文件1的第4列,然后是文件2中的其余列。

我在Python中编写了以下代码:

with open('file1.txt') as f1, open('file2.txt') as f2, open('output_file.txt', 'w') as outfile:

for line1, line2 in zip(f1, f2):

columns1 = line1.rstrip("\n").split("\t")

columns2 = line2.rstrip("\n").split("\t")

    if columns1[0] == columns2[0] and columns1[1] == columns2[1] and columns1[2] == columns2[2]:

    print >> outfile, columns2[0],columns2[1],columns2[2],columns1[3],columns2[3],columns2[4],columns2[5],columns2[6]

我获得了以下结果:

1   234 332     4   a   b   c   d  
2   345 435     6   a   b   c   d

我的问题是我的代码逐行比较

line1 with line1

line2 with line2

当我的代码将line3与line3进行比较时,它们不相等,程序停止。 如何比较line3和line4等等...如果第3行不匹配???

1 个答案:

答案 0 :(得分:0)

如果你不希望你的文件太大,为什么不迭代每一行的每一行,然后在/找到匹配时中断(假设你假设每行不超过一个匹配) 。

f1 = open('file1.txt')
f2 =  open('file2.txt') 
outfile =  open('output_file.txt', 'w') 

for line1 in f1:
    columns1 = line1.rstrip("\n").split("\t")
    for line2 in f2:
        columns2 = line2.rstrip("\n").split("\t")

        if columns1[0] == columns2[0] and columns1[1] == columns2[1] and columns1[2] == columns2[2]:

            print >> outfile, columns2[0],columns2[1],columns2[2],columns1[3],columns2[3],columns2[4],columns2[5],columns2[6]
            break
f1.close()
f2.close()
outfile.close()