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

Python如何将长字符串列表批量拆分为短字符串组成的新列表

问题描述

核心需求如下:

  • 将小说文本拆分为独立章节存入列表后,批量把每个章节拆分为单块1000词的文本块,最终为每个章节生成对应分块的子列表
  • 已完成单章节的拆分逻辑,仅需适配批量处理场景,同时需要评估列表、字典、数据框三类存储结构的适用性

已实现的单章节拆分代码如下:

text = chapters[1]
text = text.split()
n = 1000
batch = [' '.join(text[i:i+n]) for i in range(0,len(text),n)]
批量处理实现方案

直接遍历章节列表,复用已写好的单章节分块逻辑即可,不需要额外复杂依赖:

n = 1000  # 定义单文本块的词数
chapter_chunks = []
for chapter in chapters:
    words = chapter.split()
    # 直接复用原有分块逻辑
    current_chapter_chunks = [' '.join(words[i:i+n]) for i in range(0, len(words), n)]
    chapter_chunks.append(current_chapter_chunks)

最终得到的chapter_chunks是二维列表,索引和原chapters列表完全对应:chapter_chunks[0]就是第一章的所有1000词分块,chapter_chunks[1]就是第二章的分块,以此类推。
如果追求代码简洁,也可以写成嵌套列表推导式:

n = 1000
chapter_chunks = [
    [' '.join(words[i:i+n]) for i in range(0, len(words), n)]
    for words in [chapter.split() for chapter in chapters]
]

这种写法只会对每个章节执行一次split(),不会有额外性能损耗。

不同存储结构的选择建议
  • 二维列表:就是上面给出的方案,适合仅需按章节顺序遍历分块、不需要按章节特征检索的场景,写法最简单,内存占用最低,是这类需求的首选。
  • 字典:如果后续需要按章节名、章节号快速定位对应分块,字典是更优选择。可以用章节序号、章节标题作为键,对应章节的分块列表作为值,检索时不需要遍历全量数据,效率更高。参考实现:
n = 1000
chapter_chunk_map = {}
for chapter_idx, chapter in enumerate(chapters, start=1):
    words = chapter.split()
    chunks = [' '.join(words[i:i+n]) for i in range(0, len(words), n)]
    chapter_chunk_map[f"第{chapter_idx}章"] = chunks

后续需要取指定章节分块时,直接通过键取值即可,比如取第三章分块用chapter_chunk_map["第3章"]。

  • Pandas数据框:除非你后续需要做文本统计、特征工程、对接模型训练这类分析类工作,否则不推荐使用。数据框存储纯文本分块的内存开销远高于列表和字典,日常分块读写的操作也更繁琐,没有明确分析需求时没必要用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:24:23