匹配两个文件中的元素,如何将预期的格式写入新文件



我试图通过将第一列匹配到另一个更新的文件的第一列来更新我的文本文件,在匹配它之后,它将更新旧文件。这是我的oldfile:

Name Chr Pos ind1 in2 in3 ind4
foot 1 5 aa bb cc
ford 3 9 bb cc 00
fake 3 13 dd ee ff
fool 1 5 ee ff gg
fork 1 3 ff gg ee

这是newfile:

Name Chr Pos
foot 1 5
fool 2 5
fork 2 6
ford 3 9
fake 3 13

更新后的文件如下:

Name Chr Pos ind1 in2 in3 ind4
foot 1 5 aa bb cc
fool 2 5 ee ff gg
fork 2 6 ff gg ee
ford 3 9 bb cc 00
fake 3 13 dd ee ff 
下面是我的代码:
#!/usr/bin/env python
import sys
inputfile_1 = sys.argv[1]
inputfile_2 = sys.argv[2]
outputfile = sys.argv[3]
inputfile1 = open(inputfile_1, 'r')
inputfile2 = open(inputfile_2, 'r')
outputfile = open(outputfile, 'w')
ind = inputfile1.readlines()
cm = inputfile2.readlines()[1:]
outputfile.write(ind[0]) #add header
for i in ind:        
    i = i.split()
    for j in cm:
        j = j.split()
        if j[0] == i[0]:
            outputfile.writelines(j[0:3] + i[3:])
            outputfile.write('n')
inputfile1.close()
inputfile2.close()
outputfile.close()

当我运行时,./compare_substitute_2files.py oldfile newfile output为文件更新了值,但它们不遵循新文件的顺序,并且没有空格,如下面的输出所示。

Name Chr Pos ind1 in2 in3 ind4
foot15aabbcc
ford39bbcc00
fake313ddeeff
fool25eeffgg
fork26ffggee

我的问题是如何匹配到确切的顺序,并在写出来时给列表中的每个元素空格?谢谢!

file.write接受string作为其参数

如果你想写字符串序列而不是字符串,使用file.writelines方法代替:

outputfile.writelines(j[0:2] + i[3:])

最新更新