首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将行的三元组简单地排序到列中,并避免对行的双元组执行这种操作?

如何将行的三元组简单地排序到列中,并避免对行的双元组执行这种操作?
EN

Stack Overflow用户
提问于 2021-08-13 15:14:20
回答 1查看 72关注 0票数 0

如果我的问题不是那么清楚,很抱歉。基本上,我尝试做的是通过读取文件一行(三元组)中的3个非空行来识别,并对每个三元组按列将它们排序到另一个文件中(如下所述)。一个棘手的部分是只针对三元组而不是双元组(一行中的两个非空行)执行此操作。

输入:

代码语言:javascript
运行
复制
line1
line2
line3
(empty line)
(empty line)
line4
line5
(empty line)
line6
line7
line8
(empty line)
(empty line)
line9
line10
(empty line)
line11
line12
line13
代码语言:javascript
运行
复制
output: 
line1 line2 line3 
line6 line7 line8 
line11 line12 line13

您可以注意到,doublets可以跟在后面,也可以跟在两个空行后面。我非常感谢任何形式的帮助来解决我目前的问题,因为我是一个python新手,我被困在我的代码几个小时后尝试一些事情。谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-13 15:28:50

我建议您统计一下到目前为止读过的非空行的数量。如果您遇到一个空行,并且您知道从最后一个空行开始您只读取了两个非空行,那么您可以丢弃最后一行。但是,如果您发现已读取了三个非空行,则将它们写入新文件。

代码语言:javascript
运行
复制
with open('input_file.txt', 'r') as input_file:
    with open('output_file.txt', 'w') as output_file:
        non_empty = 0
        previous_lines = []
        for line in input_file.readlines():
            if line == '\n':
                if non_empty == 3:  # found a triple
                    output_file.write(' '.join(previous_lines) + '\n')
                # if it's not a triple, just ignore it
                # reset the counter so we can detect the next triple
                non_empty = 0
                previous_lines = []
            else:
                # record a non-empty line for later use
                previous_lines.append(line.replace('\n', ''))
                # and important: count how many non-empty lines there are
                non_empty += 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68774713

复制
相关文章

相似问题

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