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


Posted in Python onApril 17, 2017

本文实例讲述了Python实现将一个大文件按段落分隔为多个小文件的简单操作方法。分享给大家供大家参考,具体如下:

今天帮同学处理一点语料。语料文件有点大,并且是以连续两个换行符作为段落标志,他想把它按段落分隔成多个小文件,即每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 相关文章推荐
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
Jul 24 Python
Python使用sorted排序的方法小结
Jul 28 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
pytorch 数据集图片显示方法
Jul 26 Python
基于python实现聊天室程序
Jul 27 Python
Python3.5多进程原理与用法实例分析
Apr 05 Python
解决python有时候import不了当前的包问题
Aug 28 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 Python
Python gevent协程切换实现详解
Sep 14 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
Python的时间模块datetime详解
Apr 17 #Python
Python中标准模块importlib详解
Apr 16 #Python
Python 实现随机数详解及实例代码
Apr 15 #Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 #Python
Python生成随机数组的方法小结
Apr 15 #Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 #Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 #Python
You might like
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
JavaScript 拖拉缩放效果
2008/12/10 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
js 创建对象 经典模式全面了解
2016/08/16 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
小程序实现单选多选功能
2018/11/04 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
Python解析json文件相关知识学习
2016/03/01 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
学习Django知识点分享
2019/09/11 Python
PyCharm使用Docker镜像搭建Python开发环境
2019/12/26 Python
Pycharm连接远程服务器过程图解
2020/04/30 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
实习自我鉴定
2013/12/15 职场文书
考试不及格检讨书
2014/01/09 职场文书
校庆筹备方案
2014/03/30 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
西游记读书笔记
2015/06/25 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
java设计模式--建造者模式详解
2021/07/21 Java/Android
JavaScript函数柯里化
2021/11/07 Javascript
一文带你探究MySQL中的NULL
2021/11/11 MySQL