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在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
小白如何入门Python? 制作一个网站为例
Mar 06 Python
python 用正则表达式筛选文本信息的实例
Jun 05 Python
Python常见数字运算操作实例小结
Mar 22 Python
详解python和matlab的优势与区别
Jun 28 Python
python字典的遍历3种方法详解
Aug 10 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 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作的文本留言本的例子(六)
2006/10/09 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
php文件读取方法实例分析
2015/06/20 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
实例解析jQuery工具函数
2016/12/01 Javascript
Node.js学习入门
2017/01/03 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
python音频处理用到的操作的示例代码
2017/10/27 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python学生管理系统
2019/01/30 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
python烟花效果的代码实例
2020/02/25 Python
工程力学专业自荐信范文
2014/03/17 职场文书
年会主持词结束语
2014/03/27 职场文书
家长通知书教师评语
2014/04/17 职场文书
实习介绍信范文
2015/05/05 职场文书
工资证明格式模板
2015/06/12 职场文书