Python - 组合文本文件(特定行)

时间:2015-08-26 19:05:13

标签: python python-2.7

我有两个来自一个实验的大型文本文件,我希望以特殊的方式将其分成一个。

小数据样本:

file1:

struct MilesPerHour { 

    var rate: Double 

    init(_ rate: Double) { 

        self.rate = rate 

    } 

}

file2的:

plotA   10 
plotB   9 
plotC   9

我想得到这样的结果:

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

我不知道它如何在python中解决。我尝试用以下内容重新排序file2:

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

并使用zip但我失败了(对于大型文本文件,这种方法很费时间。)

任何帮助?

1 个答案:

答案 0 :(得分:5)

您可以使用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