本文实例讲述了Python实现将一个大文件按段落分隔为多个小文件的简单操作方法。分享给大家供大家参考,具体如下:
今天帮同学处理一点语料。语料文件有点大,并且是以连续两个换行符作为段落标志,他想把它按段落分隔成多个小文件,即每3个段落组成一个新文件。由于以前没有遇到过类似的操作,在网上找了一些相似的方法,看起来都有点复杂。所以经尝试,自己写了一段代码,完美解决问题。
基本思路是,先读原文件内容,并使用正则表达式,依据\n\n进行切片处理,结果为一个列表,其中每一个列表元素都存放一个切片中的内容;然后创建一个写文件的句柄;接下来遍历切片列表,并写入当前切片内容,判断是否已经写入了3个段落,如果不是,则继续读写下一个切片,如果已经够3个,则关闭之前的写文件句柄,以不同的文件名重新创建一个新的写文件句柄,循环结束,等待读写下一个切片。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# -*- 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程序设计有所帮助。