Python将一个大文件按段落分隔为多个小文件的简单方法

Posted brucemengbm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:将 HTML 片段分隔为段落

多个小 h5 文件或一个大文件之间最好的选择是啥?

python - 将文件读入字典 - 用大括号分隔,没有逗号分隔符

使用 python 和 pandas 将错误创建的大型 csv 文件转换为制表符分隔文件

使用 Python 按行号将大文本文件拆分为较小的文本文件