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');


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM