You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python以指定字符串为标识分割大文本文件?

Python实现按指定标识分割大型文本文件

需求描述

需要将包含分割标识Starting The Process的大型文本文件,分割为多个子文件,每个子文件包含从该标识开始到下一个标识前的所有内容(包含标识行本身)。示例文件会被分割为3个独立的子文件,每个文件对应一段以标识开头的内容块。

现有尝试代码

用户已能定位到包含标识的行,但无法提取分割后的内容并写入新文件:

logfile = "E:/DATA/result.txt"
with open(logfile, 'r') as text_file:
    lines = text_file.readlines()
    for line in lines:
        if "Starting The Process..." in line:
            print(line)

解决方案代码

以下是完整的实现代码,处理大型文件时也能高效运行(无需一次性读取全部内容到内存):

input_file = "E:/DATA/result.txt"
split_marker = "Starting The Process..."
file_counter = 1
current_content = []

with open(input_file, 'r', encoding='utf-8') as f:
    for line in f:
        # 检测到分割标识时,先把之前的内容写入文件(如果有)
        if split_marker in line:
            if current_content:
                with open(f"file{file_counter}.txt", 'w', encoding='utf-8') as out_f:
                    out_f.writelines(current_content)
                file_counter += 1
                current_content = []
            # 将当前标识行加入新的内容块
            current_content.append(line)
        else:
            # 非标识行,加入当前内容块
            current_content.append(line)
    # 处理最后一个内容块
    if current_content:
        with open(f"file{file_counter}.txt", 'w', encoding='utf-8') as out_f:
            out_f.writelines(current_content)

代码说明

  • 内存友好:逐行读取输入文件,避免一次性加载大文件占用过多内存
  • 分割逻辑:
    • 初始化计数器和当前内容列表,用于跟踪子文件编号和当前待写入的内容
    • 每遇到分割标识时,先将之前收集的内容写入已编号的子文件,然后重置内容列表,开始收集新的内容块
    • 遍历结束后,处理最后一段未触发分割标识的内容块
  • 编码处理:指定encoding='utf-8'确保文件读写时的编码一致性,避免乱码

内容的提问来源于stack exchange,提问作者Cheries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:40:37