You need to enable JavaScript to run this app. Python实现大文本文件按1024字符拆分且不破坏完整英文句子的问题
优惠活动
大模型
产品
解决方案
定价
更多

Python实现大文本文件按1024字符拆分且不破坏完整英文句子的问题

Python 大文本按要求拆分多个子文件的实现方案

核心拆分规则

  • 单条子文件字符上限严格为1024
  • 完整英文句子(相邻两个句号之间的内容)不得拆分到不同文件,需整体归属同一子文件
  • 若完整句子无法放入当前已开始写入的子文件,需整体移入下一个子文件,新子文件独立从0开始统计字符数,确保不超1024上限

现有代码问题

现有实现采用固定长度硬切割文本的逻辑,仅能通过简单回溯句号位置做粗略调整,存在句子拆分逻辑混乱、溢出内容衔接错误、无法逐句校验容量的缺陷,无法满足上述三项拆分要求。

可落地实现代码

import os
import re

# 配置参数
MAX_CHAR_LIMIT = 1024
OUTPUT_DIR = "/content/trunc"
# 替换为你实际读取的大文本内容
doc_text = "your full long text content"

# 提前创建输出目录,避免路径不存在报错
os.makedirs(OUTPUT_DIR, exist_ok=True)

# 按英文句号切分完整句子,通过正则零宽断言保留句号在原句末尾,避免内容丢失
sentences = re.split(r'(?<=\.)', doc_text)
# 过滤切分后产生的空串(处理连续句号、文本首尾空字符的异常情况)
sentences = [s.strip() for s in sentences if s.strip()]

current_buffer = ""
file_index = 0

for sent in sentences:
    # 拼接前校验:当前缓冲区长度+待加入句子长度是否超过字符上限
    if len(current_buffer) + len(sent) > MAX_CHAR_LIMIT:
        # 把当前缓冲区已有内容写入完成的子文件
        if current_buffer:
            output_path = os.path.join(OUTPUT_DIR, f"{file_index}.txt")
            with open(output_path, "w", encoding="utf-8") as f:
                f.write(current_buffer)
            file_index += 1
            # 清空缓冲区,将溢出的完整句子整体移入新缓冲区
            current_buffer = sent
    else:
        # 未超上限则直接拼接句子到当前缓冲区
        current_buffer += sent

# 处理最后缓冲区剩余的内容,写入最后一个子文件
if current_buffer:
    output_path = os.path.join(OUTPUT_DIR, f"{file_index}.txt")
    with open(output_path, "w", encoding="utf-8") as f:
        f.write(current_buffer)

规则匹配校验

  • 句子完整性:所有拆分动作以完整句子为最小单元,不存在单个句子被截断拆分到不同文件的情况
  • 字符上限:每次拼接内容前提前计算累计长度,严格保证单文件字符数不超过1024
  • 溢出逻辑:当前子文件剩余容量不足时,完整句子整体移交至下一子文件,新文件独立统计字符数,无累计计算偏差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 11:06:09