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实现下载网易云音乐的高清MV
Mar 16 Python
基于wxpython开发的简单gui计算器实例
May 30 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
python3.x实现发送邮件功能
May 22 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
利用nohup来开启python文件的方法
Jan 14 Python
numpy基础教程之np.linalg
Feb 12 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
python实现QQ邮箱发送邮件
Mar 06 Python
python Django 反向访问器的外键冲突解决
May 20 Python
python drf各类组件的用法和作用
Jan 12 Python
Python安装使用Scrapy框架
Apr 12 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
探讨php中header的用法详解
2013/06/07 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
div移动 输入框不能输入的问题
2009/11/19 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python列表list保留顺序去重的实例
2018/12/14 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python 随机按键模拟2小时
2020/12/30 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
购买200个世界上最好的内衣品牌:Bare Necessities
2017/02/11 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
个人租房协议书样本
2014/10/01 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技