如果我的问题不是那么清楚,很抱歉。基本上,我尝试做的是通过读取文件一行(三元组)中的3个非空行来识别,并对每个三元组按列将它们排序到另一个文件中(如下所述)。一个棘手的部分是只针对三元组而不是双元组(一行中的两个非空行)执行此操作。
输入:
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
output:
line1 line2 line3
line6 line7 line8
line11 line12 line13
您可以注意到,doublets可以跟在后面,也可以跟在两个空行后面。我非常感谢任何形式的帮助来解决我目前的问题,因为我是一个python新手,我被困在我的代码几个小时后尝试一些事情。谢谢:)
发布于 2021-08-13 07:28:50
我建议您统计一下到目前为止读过的非空行的数量。如果您遇到一个空行,并且您知道从最后一个空行开始您只读取了两个非空行,那么您可以丢弃最后一行。但是,如果您发现已读取了三个非空行,则将它们写入新文件。
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
https://stackoverflow.com/questions/68774713
复制相似问题