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中的闭包实例详解
Aug 29 Python
Python中尝试多线程编程的一个简明例子
Apr 07 Python
Python类定义和类继承详解
May 08 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
在python中利用KNN实现对iris进行分类的方法
Dec 11 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
Django ModelForm组件原理及用法详解
Oct 12 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
python四种出行路线规划的实现
Jun 23 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/07/04 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
jquery实现点击消失的代码
2014/03/03 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
jqueryUI tab标签页代码分享
2017/10/09 jQuery
JavaScript代码调试方法实例小结
2019/01/05 Javascript
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
python中使用序列的方法
2015/08/03 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
Python爬虫动态ip代理防止被封的方法
2019/07/07 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
详解python如何引用包package
2020/06/07 Python
Python实现LR1文法的完整实例代码
2020/10/25 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
年会活动策划方案
2014/01/23 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
民事诉讼代理词
2015/05/25 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
JS实现扫雷项目总结
2021/05/19 Javascript
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python