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库urllib与urllib2主要区别分析
Jul 13 Python
python静态方法实例
Jan 14 Python
Django中对数据查询结果进行排序的方法
Jul 17 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
Python Xml文件添加字节属性的方法
Mar 31 Python
python 接口实现 供第三方调用的例子
Aug 13 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
python实现批量移动文件
Apr 05 Python
Python学习之os包使用教程详解
Mar 21 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
DOM 事件流详解
2015/01/20 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
讲解Python中的标识运算符
2015/05/14 Python
python实现列表的排序方法分享
2019/07/01 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
python爬虫之遍历单个域名
2019/11/20 Python
Python字符串的修改方法实例
2019/12/19 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
高中毕业生自我鉴定
2013/11/03 职场文书
员工薪酬福利制度
2014/01/17 职场文书
安全生产检查通报
2014/01/29 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
三下乡个人总结
2015/03/04 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
Python绘画好看的星空图
2022/03/17 Python