首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python -合并文本文件(特定行)

Python -合并文本文件(特定行)
EN

Stack Overflow用户
提问于 2015-08-26 19:05:13
回答 2查看 96关注 0票数 1

我有两个大的文本文件的数据从一个实验,我想把它分成一个,以特殊的方式。

小样本数据:

file1:

代码语言:javascript
运行
复制
plotA   10 
plotB   9 
plotC   9

file2:

代码语言:javascript
运行
复制
98%
7/10
21
98%
5/10
20
98%
10/10
21

我希望得到这样的结果:

代码语言:javascript
运行
复制
plotA   10  98% 7/10    21
plotB   9   98% 5/10    20
plotC   9   98% 10/10   21

我不知道它是如何在python中解决的。我尝试用以下方式重新订购file2:

代码语言:javascript
运行
复制
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,但我失败了(这个方法对于大型文本文件来说很费时)。

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-26 19:18:56

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

代码语言:javascript
运行
复制
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))

如果您想要将这个结果写入一个新文件,您可以打开一个用于写的文件,而不是打印它,将行写在文件中。

结果:

代码语言:javascript
运行
复制
plotA   10  98%  7/10    21
plotB   9   98%  5/10    20
plotC   9   98%  10/10   21
票数 5
EN

Stack Overflow用户

发布于 2015-08-26 19:19:04

下面是一个示例,您必须通过错误处理和所有操作来改进它:

代码语言:javascript
运行
复制
file1 = open('file1')
file2 = open('file2')

# take one line in file1
for line in file1:
        # print result with tabulation to separate fields
        print '\t'.join(
                # the line from file1
                [line.strip()] + 
                # and three lines from file2
                [file2.readline().strip() for _ in '123']
        )       

请注意,我使用字符串'123'是因为它比range(3)短(而且它不需要函数调用);它只需具有任何类型的可迭代性,生成三个步骤。

只读取所需的数据并处理它们,避免了在内存中加载所有文件的需要(正如您所说的,您的文件很大)。

干杯。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32234727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档