我有一个巨大的文件,其中的制表符定界为0-10行。我的问题是,如何忽略缺少空行的整个行[4]?我的输入文件
1 GRMZM2G052619_P03 10 56 a b c d e y
2 GRMZM5G888620_P01 23 67 go:89 f g h k l m
3 GRMZM5G886789_P02 45 89 o p r s t w
因此,我的最终输出应如下所示:
2 GRMZM5G888620_P01 23 67 go:89 f g h k l m
import re
f=open('input.txt','r')
r=open('output.txt','w')
lines=f.readlines()
for line in lines:
new_list=re.split(r'\t+',line)
go_acc=new_list[4]
if go_acc != '':
r.writelines(line)
f.close()
r.close()
我认为如果go_acc!=“
最佳答案
这里的问题是,由于您要用正则表达式\t+
分隔行,因此结果的字符串列表将不包含任何空字符串-这些“空”字段将被简单地跳过。例如,第一行将被解析为["1", "GRMZM2G052619_P03", "10", "56", "a", "b", "c", "d", "e", "y"]
,因此索引4处的项不是''
而是"a"
。
我认为在这种情况下,更好的方法是实际尝试匹配您要寻找的内容。例如,如果索引4处的可选项是go:XX
,其中XX是某个数字,那么您可以执行以下操作:
import re
f=open('input.txt','r')
r=open('output.txt','w')
for line in f.readlines():
if re.search(r'go:\d+', line):
r.write(line + "\n")
f.close()
r.close()
关于python - 如何忽略缺少数据的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23392391/