我有这样一个制表符分隔的文件
Acc Pop snp1 snp2 snp3 snp4 snp5
a1 pop1 0 1 0 1 0
a2 pop1 0 1 0
a3 pop1 0 1 0 0 0
a4 pop1 0 1 0 1 0
a5 pop1 0 1 0 0
a6 pop1 1 0 0 0
a7 pop1 0 1 0 0 0
a8 pop1 0 1 0 0 0
a9 pop1 0 1 0
a10 pop1 0 1 0 0 1
我需要用'-9'替换所有丢失的数据。所以输出像这样
Acc Pop snp1 snp2 snp3 snp4 snp5
a1 pop1 0 1 0 1 0
a2 pop1 0 1 -9 -9 0
a3 pop1 0 1 0 0 0
a4 pop1 0 1 0 1 0
a5 pop1 0 1 0 -9 0
a6 pop1 -9 1 0 0 0
a7 pop1 0 1 0 0 0
a8 pop1 0 1 0 0 0
a9 pop1 0 1 0 -9 -9
a10 pop1 0 1 0 0 1
下面是我的尝试
import re
infilename = 'file2.txt'
outfilename = 'file.txt'
regex = re.compile(r"\s+")
with open(infilename, 'r') as infile, open(outfilename, 'w') as outfile:
for line in infile:
line = line.rstrip('\n').split('\t')
outfile.write(regex.sub('-9', line))
你差点就成功了。你知道吗
当你做分割的时候,你会得到一个项目列表,所以你不能对它们做正则表达式。你知道吗
相反,通过列表进行迭代,如果没有设置值,只需将值替换为-9。你知道吗
请记住,这将替换表中的所有“空白”字段,甚至是标题中的一个字段。你知道吗
相关问题 更多 >
编程相关推荐