Python 从文件中删除满足条件的行
我有一份档案Python 从文件中删除满足条件的行,python,perl,shell,Python,Perl,Shell,我有一份档案 chrM 1114 A A 555 G 52 9.8 xyz chrM 1256 A A 555 G 0 inf xac chrM 1184 A A 400 G 50 8 cxv chrM 1148 p q 500 G 100 5 asad chrM 2500 x x 555 v 0 inf dad 这里最后第二列是5美元/6美元的比率 我想删除其中的行 $3=$4和$8=inf如果整个条件满足,则应删除该行 预期产量 chrM 1114 A A 555 G 52 9.8 x
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1256 A A 555 G 0 inf xac
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
chrM 2500 x x 555 v 0 inf dad
这里最后第二列是5美元/6美元的比率
我想删除其中的行
$3=$4和$8=inf如果整个条件满足,则应删除该行
预期产量
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
我试着去做
while $3=$4
do if %8=inf
do -d
done
done
使用awk时,请简单地如下所示:
awk '{if ($3 != $4 && $8 != "Inf") { print $0 } }' myfile.txt
解决这一问题的python解决方案是:
file = open("myfile.txt")
file2 = open("myfile2.txt", "a")
for i, line in enumerate(file)
strList = line.split()
if not (strList[2] == strList[3] and strList[7] == "inf"):
file2.write(line)
file.close()
file2.close()
这假定值之间用空格分隔
awk '!$3==$4||$8!~/inf/' file
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
犯了一个错误,希望现在就更正。在Perl中,解决方案几乎是对您的问题的转录
perl-ane'除非$F[2]eq$F[3]和$F[7]eq“inf”data.txt,否则打印
输出
chrM 1114 A 555 G 52 9.8 xyz
chrM 1184 A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
难道你连试都没试过吗?非常好,它也是作为Perl发行版的一部分安装的,并且可以通过计算机上的
perldoc
命令获得。Python在这里相关吗?rahul先生,如果它给我所需的输出,那么它是,但是它用1if值替换第3列\t如果值是分开的,它应该可以在所有空白处工作,但是如果它没有,然后,您可以将“\t”作为参数添加到line.split()中,以便它只拆分\t