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网络编程之数据传输UDP实例分析
May 20 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
Python登录系统界面实现详解
Jun 25 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
python在地图上画比例的实例详解
Nov 13 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读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP版本如何选择?应该使用哪个版本?
2015/05/13 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
总结JavaScript设计模式编程中的享元模式使用
2016/05/21 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
JS原型对象操作实例分析
2020/06/06 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
Python黑魔法@property装饰器的使用技巧解析
2016/06/16 Python
基于python中theano库的线性回归
2018/08/31 Python
python 调用钉钉机器人的方法
2019/02/20 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
护理毕业生自我鉴定
2014/02/11 职场文书
大学生作弊检讨书
2014/09/11 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
边城读书笔记
2015/06/29 职场文书
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript