Skip to main content
 首页 » 编程设计

Python之合并文本文件(特定行)

2025年05月04日17cmt

我有两个来自一个实验的大型文本数据文件,我想以特殊方式将其拆分为一个。

小数据样本:

文件1:

plotA   10  
plotB   9  
plotC   9 

文件2:

98% 
7/10 
21 
98% 
5/10 
20 
98% 
10/10 
21 

我想要这样的结果:

plotA   10  98% 7/10    21 
plotB   9   98% 5/10    20 
plotC   9   98% 10/10   21 

我不知道它在 python 中是如何解决的。我尝试重新排序 file2:

lines = file2.readlines() 
aaa = lines[0] + lines[3] + lines[6] 
bbb = lines[1] + lines[4] + lines[7] 
ccc = lines[2] + lines[5] + lines[8] 

并使用 zip 但我失败了(而且这种方法对于大文本文件很耗时)。

有什么帮助吗?

请您参考如下方法:

您可以使用 itertools.izip_longest将文件 2 切成三行并再次使用它来将它们与第一个文件一起压缩:

from itertools import izip_longest 
with open('file1.txt') as f1, open('file2.txt') as f2: 
 
     args = [iter(f2)] * 3 
     z = izip_longest(f1, izip_longest(*args), fillvalue='-') 
     for line, tup in z: 
           print '{:11}'.format(line.strip()), '{:5}{:5}{:>5}'.format(*map(str.strip, tup)) 

如果你想将这个结果写入一个新文件,你可以打开一个文件进行写入,而不是打印它,而是将行写入文件。

结果:

plotA   10  98%  7/10    21 
plotB   9   98%  5/10    20 
plotC   9   98%  10/10   21