如何使用Python将文本文件中的多段文本块分割为独立文件?
使用Python分割文本文件中的多段文本块
没问题,我来帮你一步步实现这个需求,下面是具体的思路和代码,每部分都有清晰的注释,你可以直接套用:
实现思路
- 先读取目标文本文件的全部内容
- 用你指定的分隔符
(female 16+)将内容拆分成多个候选文本块 - 清理拆分后产生的空内容或无效片段
- 对每个有效块,提取从条目起始(比如
Channel 9或Southern Cross开头)到包含Brief:的行结束的部分 - 最后将每个处理好的文本块保存为独立的文件
完整代码示例
# 定义分隔符和输入文件路径,你可以根据实际情况修改 DELIMITER = "(female 16+)" INPUT_FILE = "input.txt" # 读取整个文件内容,使用utf-8编码避免乱码 with open(INPUT_FILE, 'r', encoding='utf-8') as f: content = f.read() # 用指定分隔符拆分内容,得到各个候选文本块 raw_blocks = content.split(DELIMITER) # 过滤掉空块或仅含空白字符的块,同时去除每个块两端的多余空白 valid_blocks = [block.strip() for block in raw_blocks if block.strip()] # 处理每个有效块,只保留从开头到包含"Brief:"的行结束的内容 processed_blocks = [] for block in valid_blocks: # 将块按行拆分,方便逐行处理 lines = block.split('\n') processed_lines = [] for line in lines: processed_lines.append(line) # 当遇到包含"Brief:"的行时,停止添加后续行 if "Brief:" in line: break # 将处理后的行重新拼接成完整的文本块 processed_block = '\n'.join(processed_lines) processed_blocks.append(processed_block) # 将每个处理好的文本块保存为独立文件,文件名按序号命名 for idx, block in enumerate(processed_blocks, 1): output_filename = f"entry_{idx}.txt" with open(output_filename, 'w', encoding='utf-8') as f: f.write(block) print(f"已成功生成文件: {output_filename}")
代码说明
- 读取文件:使用
read()一次性读取全部内容,确保不会漏掉跨行的分隔符(虽然你的示例里分隔符在同一行,但这种方法更通用) - 拆分与过滤:拆分后过滤空块是为了处理原文本末尾可能存在的分隔符导致的无效内容
- 提取目标内容:按行遍历并在遇到
Brief:时停止,精准保留你需要的文本范围 - 保存文件:用
enumerate(..., 1)让文件名从entry_1.txt开始,清晰区分不同条目
运行这段代码后,你会得到两个独立的文本文件,分别对应原文件中的两个条目,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Ilumtics
相关产品推荐
相关产品推荐

