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 re模块介绍
Nov 30 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Python中你应该知道的一些内置函数
Mar 31 Python
python实时监控cpu小工具
Jun 21 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
python学生信息管理系统(完整版)
Apr 05 Python
python设置环境变量的作用和实例
Jul 09 Python
django 简单实现登录验证给你
Nov 06 Python
PyTorch中topk函数的用法详解
Jan 02 Python
学习python需要有编程基础吗
Jun 02 Python
Python 下载Bing壁纸的示例
Sep 29 Python
Python实现JS解密并爬取某音漫客网站
Oct 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用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
在JavaScript中使用NaN值的方法
2015/06/05 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
JS作用域深度解析
2016/12/29 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
详解Require.js与Sea.js的区别
2018/08/05 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
js作用域和作用域链及预解析
2019/04/11 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
对于Python装饰器使用的一些建议
2015/06/03 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
Python给图像添加噪声具体操作
2019/03/03 Python
python tkinter实现屏保程序
2019/07/30 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
django自定义模板标签过程解析
2019/12/14 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
Python使用re模块验证危险字符
2020/05/21 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
销售工作岗位职责
2013/12/24 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
2015年电工工作总结
2015/04/10 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python