Python實(shí)現(xiàn)將一個(gè)大文件按段落分隔為多個(gè)小文件的簡(jiǎn)單操作方法
本文實(shí)例講述了Python實(shí)現(xiàn)將一個(gè)大文件按段落分隔為多個(gè)小文件的簡(jiǎn)單操作方法。分享給大家供大家參考,具體如下:
今天幫同學(xué)處理一點(diǎn)語料。語料文件有點(diǎn)大,并且是以連續(xù)兩個(gè)換行符作為段落標(biāo)志,他想把它按段落分隔成多個(gè)小文件,即每3個(gè)段落組成一個(gè)新文件。由于以前沒有遇到過類似的操作,在網(wǎng)上找了一些相似的方法,看起來都有點(diǎn)復(fù)雜。所以經(jīng)嘗試,自己寫了一段代碼,完美解決問題。
基本思路是,先讀原文件內(nèi)容,并使用正則表達(dá)式,依據(jù)\n\n進(jìn)行切片處理,結(jié)果為一個(gè)列表,其中每一個(gè)列表元素都存放一個(gè)切片中的內(nèi)容;然后創(chuàng)建一個(gè)寫文件的句柄;接下來遍歷切片列表,并寫入當(dāng)前切片內(nèi)容,判斷是否已經(jīng)寫入了3個(gè)段落,如果不是,則繼續(xù)讀寫下一個(gè)切片,如果已經(jīng)夠3個(gè),則關(guān)閉之前的寫文件句柄,以不同的文件名重新創(chuàng)建一個(gè)新的寫文件句柄,循環(huán)結(jié)束,等待讀寫下一個(gè)切片。
# -*- coding:utf8 -*- import re; p=re.compile('\n\n',re.S); fileContent=open('files/辦公室.txt','r',encoding='utf8').read();#讀文件內(nèi)容 paraList=p.split(fileContent) #根據(jù)換行符對(duì)文本進(jìn)行切片 fileWriter=open('files/0.txt','a',encoding='utf8');#創(chuàng)建一個(gè)寫文件的句柄 for paraIndex in range(len(paraList)):#遍歷切片后的文本列表 fileWriter.write(paraList[paraIndex]);#先將列表中第一個(gè)元素寫入文件中 if((paraIndex+1)%3==0):#判斷是否寫夠3個(gè)切片,如果已經(jīng)夠了 fileWriter.close(); #關(guān)閉當(dāng)前句柄 fileWriter=open('files/'+str((paraIndex+1)/3)+'.txt','a',encoding='utf8'); #重新創(chuàng)建一個(gè)新的句柄,等待寫入下一個(gè)切片元素。注意這里文件名的處理技巧。 fileWriter.close();#關(guān)閉最后創(chuàng)建的那個(gè)寫文件句柄 print('finished');
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python URL操作技巧總結(jié)》、《Python圖片操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python中isoweekday和weekday的區(qū)別及說明
這篇文章主要介紹了python中isoweekday和weekday的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Linux RedHat下安裝Python2.7開發(fā)環(huán)境
這篇文章主要為大家詳細(xì)介紹了Linux RedHat下安裝Python2.7、pip、ipython環(huán)境、eclipse和PyDev環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05使用Python進(jìn)行時(shí)間序列分析的8種繪圖類型
時(shí)間序列數(shù)據(jù)是按時(shí)間順序按固定時(shí)間間隔排列的觀測(cè)值的集合,每個(gè)觀察對(duì)應(yīng)于一個(gè)特定的時(shí)間點(diǎn),并且可以以各種頻率(例如,每天、每月、每年)記錄數(shù)據(jù),本文介紹了幾種類型的繪圖,可幫助您使用 Python 進(jìn)行時(shí)間序列分析,并提供使用可免費(fèi)訪問的數(shù)據(jù)集的詳細(xì)示例2023-09-092行Python代碼實(shí)現(xiàn)給pdf文件添加水印
你們?cè)诮oPDF文件添加水印時(shí),還在手動(dòng)一頁頁添加嗎?本文小編為大家?guī)砹艘粋€(gè)更方便的方法,即用Python的2行代碼來實(shí)現(xiàn),感興趣的小伙伴可以學(xué)習(xí)一下2022-02-02Python如何通過百度翻譯API實(shí)現(xiàn)翻譯功能
這篇文章主要介紹了Python如何通過百度翻譯API實(shí)現(xiàn)翻譯功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python實(shí)現(xiàn)統(tǒng)計(jì)給定列表中指定數(shù)字出現(xiàn)次數(shù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)統(tǒng)計(jì)給定列表中指定數(shù)字出現(xiàn)次數(shù)的方法,涉及Python針對(duì)列表的簡(jiǎn)單遍歷、計(jì)算相關(guān)操作技巧,需要的朋友可以參考下2018-04-04詳解Python中的偏函數(shù)(Partial Functions)
Python中的偏函數(shù)是來自函數(shù)式編程的一個(gè)強(qiáng)大工具,它的主要目標(biāo)是減少函數(shù)調(diào)用的復(fù)雜性這個(gè)概念可能起初看起來有點(diǎn)困難理解,但一旦你明白了它的工作方式,它可能會(huì)成為你的編程工具箱中的重要組成部分,文中有相關(guān)的代碼介紹,需要的朋友可以參考下2023-06-06使用Python實(shí)現(xiàn)獲取文件詳細(xì)信息
Python提供了豐富的內(nèi)置模塊和函數(shù),獲取和操作文件的各種屬性信息,比如大小、修改時(shí)間、權(quán)限以及路徑等,本文將通過詳細(xì)的示例代碼展示如何使用Python中的os和os.path模塊來獲取文件屬性信息,需要的可以參考下2023-12-12