我有一个看起来很简单的问题,但现在已经坚持太久了。我想比较两个文件(格式如下)
> file1
20 246057 0.28 68363 0 A
20 246058 0.28 68396 T C
20 246059 0.28 76700 A G
20 246060 0.28 76771 T C
20 246061 0.28 76915 0 A
> file2
112879285 R 68303 20
200068921 M 68319 20
200257910 K 68336 20
200192457 W 68363 20
138777928 Y 68396 20
我想将file1列0和3与file2列2和3进行比较,如果它们匹配,我希望输出两个文件中匹配行的其余信息,如下所示:
^{pr2}$这是我到目前为止的代码,我已经尝试了这方面的几个变体和这里的许多建议,但我仍然无法从file1中获得相应的信息。我尝试的大多数操作都会导致每次匹配都重复file1中的最后一行。在
#!/usr/bin/python
import csv
data2 = []
output = open("output.txt","w")
with open("file1.txt", "rb") as in_file1, open("file2.txt","rb") as in_file2:
reader1 = csv.reader((in_file1), delimiter="\t")
for row1 in reader1:
y1 = row1[0], row1[3]
data2.append(tuple(y1))
y = row1
reader2 = csv.reader((in_file2), delimiter="\t")
for row2 in reader2:
z = row2[-1], row2[2]
if tuple(z) in data2:
out = "\t".join(row2)
output.write(out+"\n")
我正在努力的部分是在解析之后从file1获取输出。因此,我当前的结果是下面的结果,但我还需要file1中这些行的相应信息:
> current output
200192457 W 68363 20
138777928 Y 68396 20
如有任何帮助或建议,我们将不胜感激!谢谢您!(我使用的是python2.7)
这是^{} ,^{} ,和{a3}的一个很好的用例:
输出:
^{pr2}$说明:
-11
)和第四个(-24
)字段上的两个文件file1
和{$4 == $9
);打印这些行({ }
)。在-f1-8
)。在请尝试将代码修改为以下内容,实际上需要在file2中存储与之匹配的行1:
下面是我从头开始写的解决方案:
它读取第一个文件,并使用
tuple
键将值存储到dict
中。然后它读取第二个文件,并检查字典中是否存在tuple
键。如果是这样,它将打印所有数据。在请注意,在程序的最终工作版本中,您必须记住关闭这些文件。为了简洁起见,我省略了关闭文件的行。在
相关问题 更多 >
编程相关推荐