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实现大文本文件切割

用Python实现一个文本文件切割器
  • zhang_qxian
  • zhang_qxian
  • 2017年03月16日 17:27
  • 3436

利用Python对文本文件进行简单的处理

在诸多软件压缩包中或是项目压缩包中都会存在一个readme.txt文件,其中的内容无非是对软件的简单介绍和注意事项。但是在该文本文件中,内容没有分段分行,是非常冗杂地混在一起。当然处理手段多种多样,而...
  • studyhard232
  • studyhard232
  • 2017年03月28日 23:21
  • 1483

python 按行分割文件

#!/usr/bin/env python #--*-- coding:utf-8 --*-- import os class SplitFiles(): """按行分割文件""" ...
  • zhang_Red
  • zhang_Red
  • 2013年06月08日 14:30
  • 6978

python面试--多进程分块处理大型文件

多进程分块处理大型文件
  • qq_28172757
  • qq_28172757
  • 2017年07月04日 17:49
  • 416

Python实现大文件分片上传

想借着这篇文章简要谈谈WebUploader大文件上传与Python结合的实现。 WebUploader是百度团队对大文件上传的前端实现,而后端需要根据不同的语言自己实现。这里我采用Python语言的...
  • jinixin
  • jinixin
  • 2017年08月25日 00:37
  • 1981

python-按比例将子文件划分为train data和test data

python-按比例将子文件划分为train data和test data 程序目的: 将data划分为测试集和训练集:  原始数据存放位置:./data/danzi/ 测试集位置:./dat...
  • xz1308579340
  • xz1308579340
  • 2018年01月24日 19:18
  • 33

用R语言把超大文本文件拆分成几个小文本文件

近一段时间一直在研究一些医院的数据。前两天遇到一个尴尬:想打开一个仅有3G左右的文本文件(有时候必须要打开,直接传到数据库满足不了需求),破电脑(4G内存的电脑)就是打不开(用的Notepad++)。...
  • zhenglit
  • zhenglit
  • 2016年04月30日 12:06
  • 3812

Python 中文分句

今天在某论坛中看到应用Python对中文进行分句的源码(http://www.corpus4u.org/forum/showthread.php?s=86a8e08ccda003206c8f8d66c...
  • laoyaotask
  • laoyaotask
  • 2013年07月06日 22:31
  • 7091

有关Python的分片操作

刚在 http://bbs.byr.cn/#!article/Python/1693 刚
  • wxwd1
  • wxwd1
  • 2014年07月17日 13:14
  • 3607

用pandas里的groupby函数实现把一个大文件按某一列的类型分成多个文件

上图说话,浅显易懂 大文件: 可以发现上图“单元这一行”有三个不同的值,我想以这一列为主键,分成三个文件,文件名以主键内容命名,输入如下图: 对于GO7-33-286.csv、GO7-35-226...
  • destiny_python
  • destiny_python
  • 2017年11月30日 11:20
  • 178
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python将一个大文件按段落分隔为多个小文件的简单方法
举报原因:
原因补充:

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