Python将一个大文件按段落分隔为多个小文件的简单方法

原创 2015年07月08日 00:40:20

今天帮同学处理一点语料。语料文件有点大,并且是以连续两个换行符作为段落标志,他想把它按段落分隔成多个小文件,即每3个段落组成一个新文件。由于以前没有遇到过类似的操作,在网上找了一些相似的方法,看起来都有点复杂。所以经尝试,自己写了一段代码,完美解决问题。
基本思路是,先读原文件内容,并使用正则表达式,依据\n\n进行切片处理,结果为一个列表,其中每一个列表元素都存放一个切片中的内容;然后创建一个写文件的句柄;接下来遍历切片列表,并写入当前切片内容,判断是否已经写入了3个段落,如果不是,则继续读写下一个切片,如果已经够3个,则关闭之前的写文件句柄,以不同的文件名重新创建一个新的写文件句柄,循环结束,等待读写下一个切片。

# -*- coding:utf8 -*- 
import re;
p=re.compile('\n\n',re.S);
fileContent=open('files/办公室.txt','r',encoding='utf8').read();#读文件内容
paraList=p.split(fileContent) #根据换行符对文本进行切片

fileWriter=open('files/0.txt','a',encoding='utf8');#创建一个写文件的句柄
for paraIndex in range(len(paraList)):#遍历切片后的文本列表
    fileWriter.write(paraList[paraIndex]);#先将列表中第一个元素写入文件中
    if((paraIndex+1)%3==0):#判断是否写够3个切片,如果已经够了
        fileWriter.close(); #关闭当前句柄
        fileWriter=open('files/'+str((paraIndex+1)/3)+'.txt','a',encoding='utf8'); #重新创建一个新的句柄,等待写入下一个切片元素。注意这里文件名的处理技巧。
fileWriter.close();#关闭最后创建的那个写文件句柄
print('finished');
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python 模拟分割大文件后,多线程处理

#!/usr/bin/env python #--*-- coding:utf-8 --*-- from random import randint from time import ctime f...

用Python实现大文本文件切割

用Python实现一个文本文件切割器

Python读取大文件(GB)

最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法。 ...

python 按行分割文件

#!/usr/bin/env python #--*-- coding:utf-8 --*-- import os class SplitFiles(): """按行分割文件""" ...

Python 大文件分割

http://www.okpython.com/bbs/thread-2246-1-7.html我们知道,一个EXCEL文件单表行数最多是65536行,超过这个行数,就无法再EXCEL中显示,在日常工...

结合Scikit-learn介绍几种常用的特征选择方法

特征选择(排序)对于数据科学家、机器学习从业者来说非常重要。好的特征选择能够提升模型的性能,更能帮助我们理解数据的特点、底层结构,这对进一步改善模型、算法都有着重要作用。 特征选择主要有两个功能: ...

模型融合

1.blending 比如数据分成train和test,对于model_i(比如xgboost) ,即对所有的数据训练模型model_i,预测test数据生成预测向量v_i, 然后对train做CV ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)