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装饰器入门学习教程(九步学习)
Jan 28 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python爬虫包BeautifulSoup实例(三)
Jun 17 Python
Python3.7 读取 mp3 音频文件生成波形图效果
Nov 05 Python
Python实现数值积分方式
Nov 20 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 Python
python字典通过值反查键的实现(简洁写法)
Sep 30 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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
Thinkphp关闭缓存的方法
2015/06/26 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python编程实现归并排序
2017/04/14 Python
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
python程序如何进行保存
2020/07/03 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
大学班级干部的自我评价分享
2014/02/10 职场文书
应聘护士求职信
2014/07/21 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
严以律己学习心得体会
2016/01/13 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
vue实现同时设置多个倒计时
2021/05/20 Vue.js