如何用Python从大文本生成每行含固定词数的DataFrame?
解决大文本文件拆分固定词数行并转为DataFrame的方案
直接给你一套可运行的代码方案,完全贴合你的分类器场景需求:
第一步:读取并预处理文本
先把大文本文件内容读出来,合并成完整文本后拆分单词,还能顺便清理多余标点(可选,看你分类器的具体需求)。第二步:按固定词数分组
把所有单词切成每10/20个一组,每组拼成一段文本,保证每行词数相对均匀。第三步:转为DataFrame
把分组后的文本列表直接转成pandas的DataFrame,方便后续分类器调用。
完整代码示例
import pandas as pd import re # 配置参数 TEXT_FILE_PATH = "你的大文本文件路径.txt" WORD_PER_ROW = 20 # 可以改成10 # 1. 读取并预处理文本 with open(TEXT_FILE_PATH, 'r', encoding='utf-8') as f: # 读取所有内容,替换换行符为空格,避免换行影响拆分 full_text = f.read().replace('\n', ' ') # 可选:用正则去掉标点符号,只保留单词和空格 clean_text = re.sub(r'[^\w\s]', '', full_text) # 拆分所有单词(自动忽略多余空格) all_words = clean_text.split() # 2. 按固定词数分组 text_segments = [] for i in range(0, len(all_words), WORD_PER_ROW): # 取从i开始的WORD_PER_ROW个单词,拼成字符串 segment = ' '.join(all_words[i:i+WORD_PER_ROW]) text_segments.append(segment) # 3. 转为DataFrame df = pd.DataFrame({'text_segment': text_segments}) # 查看结果 print(df.head())
补充说明
- 如果不需要清理标点,直接去掉
clean_text那一行,用full_text.split()就行 - 最后一组如果不足指定词数,代码会自动保留;要是你想丢弃短段,加个判断
if len(segment.split()) >= 某个阈值再加入列表即可 - 若文件编码报错,把
encoding='utf-8'改成encoding='gbk'或其他对应编码
内容的提问来源于stack exchange,提问作者Eva Mizer
相关产品推荐
相关产品推荐

