我有两个来自一个实验的大型文本文件,我希望以特殊的方式将其分成一个。
小数据样本:
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但我失败了(对于大型文本文件,这种方法很费时间。)
任何帮助?
答案 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