我正在尝试比较两个文件并在其后添加一些信息。
我的文件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行不匹配???
答案 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()