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 10 Python
Python中的魔法方法深入理解
Jul 09 Python
Python生成随机数组的方法小结
Apr 15 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
python实现将视频按帧读取到自定义目录
Dec 10 Python
使用已经得到的keras模型识别自己手写的数字方式
Jun 29 Python
python 模拟登陆github的示例
Dec 04 Python
python中二分查找法的实现方法
Dec 06 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
我的论坛源代码(七)
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/12/06 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
用Python制作检测Linux运行信息的工具的教程
2015/04/01 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python paramiko模块的使用示例
2018/04/11 Python
Python之list对应元素求和的方法
2018/06/28 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
.net面试题
2016/09/17 面试题
DIY手工制作经营店创业计划书
2014/02/01 职场文书
主题婚礼策划方案
2014/02/10 职场文书
婚礼主持结束词
2014/03/13 职场文书
金融专业求职信
2014/08/05 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
明星邀请函
2015/02/02 职场文书
MySQL学习之基础命令实操总结
2022/03/19 MySQL