如何逆序重排文本文件中的文本块?Python 3.6实现
搞定Label块逆序的Python 3.6方案
嘿,我来帮你解决这个文本块逆序的问题!根据你的需求,我写了一段适配Python 3.6的代码,能把文件里的Label块整体倒过来排,同时每个块里的内容顺序保持不变。
先理清楚需求
你的文本文件里,每个Label:都是单独一行,后面跟着对应文本,要把这些Label块从后往前排,比如原来的A→B→C,变成C→B→A,每个块里的Text顺序不动。
直接上代码
def reverse_label_blocks(input_file, output_file): # 读入文件所有行,保留原始格式(包括换行) with open(input_file, 'r', encoding='utf-8') as f: all_lines = f.readlines() # 把内容拆成一个个Label块 label_blocks = [] current_block = [] for line in all_lines: # 遇到Label开头的行,就把当前块存起来,开始新的块 if line.strip().startswith('Label:'): if current_block: label_blocks.append(current_block) current_block = [line] else: # 非Label行就加到当前块里 if current_block: current_block.append(line) # 别忘了把最后一个块也加进去 if current_block: label_blocks.append(current_block) # 反转块的顺序,Python 3.6完全支持这个切片语法 reversed_blocks = label_blocks[::-1] # 把反转后的块写入输出文件 with open(output_file, 'w', encoding='utf-8') as f: for block in reversed_blocks: f.writelines(block) # 示例用法,替换成你的输入输出文件路径就行 reverse_label_blocks('your_input.txt', 'your_output.txt')
代码怎么工作的?
- 读文件:按行读取整个文件,这样能保留每行的换行符和格式,不会破坏原文本的排版。
- 拆分块:遍历每一行,一旦碰到
Label:开头的行,就把之前攒的当前块存进列表,然后开始新的块;普通文本行就直接加到当前块里。 - 反转块列表:用
[::-1]这个Python切片技巧快速反转块的顺序,简单又高效,Python 3.6完全支持。 - 写结果:把反转后的块依次写入新文件,每个块内部的顺序和原来一模一样。
测试一下
如果你的输入文件是这样:
Label: A
Text1
Text2
Label: B
Text3
Text4
Label: C
Text5
Text6
运行代码后,输出文件就会变成:
Label: C
Text5
Text6
Label: B
Text3
Text4
Label: A
Text1
Text2
完全符合你的预期!
内容的提问来源于stack exchange,提问作者EZM
相关产品推荐
相关产品推荐

