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基础教程之基本内置数据类型介绍
Feb 20 Python
python中的多重继承实例讲解
Sep 28 Python
Python使用gensim计算文档相似性
Apr 10 Python
django上传图片并生成缩略图方法示例
Dec 11 Python
Python实现将照片变成卡通图片的方法【基于opencv】
Jan 17 Python
Python实现将doc转化pdf格式文档的方法
Jan 19 Python
python opencv之分水岭算法示例
Feb 24 Python
python实现梯度下降算法
Mar 24 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
Feb 25 Python
python在一个范围内取随机数的简单实例
Aug 16 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 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/02/03 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
css配合jquery美化 select
2013/11/29 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
js实现Select头像选择实时预览代码
2015/08/17 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
windows下python和pip安装教程
2018/05/25 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python安装scipy的方法步骤
2019/06/26 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
Python与C/C++的相互调用案例
2021/03/04 Python
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
高中毕业的自我鉴定
2013/12/09 职场文书
产品开发计划书
2014/04/27 职场文书
甘南现象心得体会
2014/09/11 职场文书
战马观后感
2015/06/08 职场文书
员工工作心得体会
2019/05/07 职场文书
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL