Python初学者,我已经熟悉阅读文件并进行基本操作。但是现在我想根据另一个文件过滤一个文件。我想过滤 file1 以删除 file2 的第 3 列中得分低于 100000 的任何行。我有一个主数据文件(file1):
7 303 0.207756232686981
16 23 0.208562019758507
6 57 0.208727272727273
7 80 0.209065354884048
11 124 0.209500609013398
我想制作一个与此相同的新数据文件,但根据第二个文件(file2)中的信息删除分数低于 100000 的任何行:
chr7 303 292526
chr16 23 169805
chr6 57 62822
chr11 124 320564
chr7 80 300291
两个文件的前两列包含确定该行是否在两个文件中引用相同大小写的信息。然而,第二个文件在每个数字之前添加了“chr”(这个“chr”可以忽略)。第一个文件中的所有行都存在于第二个文件中,但第二个文件中的某些行不在第一个文件中,可以忽略。
所以看看上面的例子:
6 57 0.208727272727273
将从新输出中删除,因为它在文件 2 的第 3 列中的值低于 100,000,而第一个文件中的所有其他行将包括在内,因为您的值超过 100000。对于输出文件维护与文件 1 相同的行顺序。
任何帮助将不胜感激。我通常使用的python结构
for line in inputfile:
line = line.rstrip()
fields = line.split("\t")
所以建立这个结构的答案会特别好。
如果问题不清楚,请告诉我。
到目前为止的解决方案:
#!/usr/bin/env python
f2 = open( '/mnt/genotyping/CT/GreatApes/HKA/callability/callable_sites_per_region_500Kb.txt', 'r')
d2 = {}
print f2
for line in f2:
line = line.rstrip()
fields = line.split("\t")
key = (fields[0].replace('chr', ''), fields[1])
d2[key] = int(fields[2])
f1 = open( '/mnt/genotyping/CT/GreatApes/HKA/Barcelona_approach/500kb/cov_5/Homo-Gorilla/R_plots/Gorilla_genome_dist_cov5.txt', 'r')
for line in f1:
line = line.rstrip()
fields = line.split("\t")
if 'region' not in line:
key = (fields[0], fields[1])
if d2[key] >= 100000:
print line
谢谢