python读取只读word只读_Python用于NLP :处理文本和PDF文件
提示:代碼圖片可以點擊全屏查看,雙指操作還可以放大縮小。
這是我的Python用于自然語言處理(NLP)系列文章的第一篇文章。在本文中,我們將從Python for NLP的基礎知識開始。我們將看到如何使用Python處理簡單的文本文件和PDF文件。
處理文本文件
文本文件可能是你在NLP工作中遇到的最基本類型的文件。在本節(jié)中,我們將了解如何用Python讀取文本文件,創(chuàng)建文本文件以及將數(shù)據寫入文本文件。
閱讀文本文件
使用以下文本創(chuàng)建一個文本文件,并使用“.txt”擴展名將其保存在本地目錄中。
在我的例子中,我將名為“myfile.txt”的文件存儲在我的D盤根目錄中。
閱讀文件的所有內容
現(xiàn)在讓我們看看我們如何閱讀文件的全部內容。第一步是指定文件的路徑,如下所示:
要打開文件,你可以使用Python的內置open函數(shù)。如果你執(zhí)行上面的代碼并且沒有看到錯誤,則表示你的文件已成功打開。確保將文件路徑更改為保存文本文件的位置。
現(xiàn)在讓我們看看myfile變量中存儲了什么:
輸出如下所示:
輸出顯示該myfile變量是myfile.txt文件的容器,并以只讀模式打開文件。
如果指定了錯誤的文件路徑,則可能會收到以下錯誤:
每當你得到Errno 2時,可能有兩個原因。你的文件不存在或者你給open函數(shù)提供了錯誤的文件路徑。
現(xiàn)在,讓我們讀一下該文件的內容。為此,你需要在myfile變量上調用read()函數(shù),如下所示:
在輸出中,你應該可以看到文件的文本,如下所示:
現(xiàn)在,如果你嘗試再次調用read,控制臺上將不會打印任何內容:
這是因為一旦調用該read方法,光標就會移動到文本的末尾。因此,當你再次調用read時,不會顯示任何內容,因為已經沒有更多要打印的文本了。
一個解決這個問題的方案就是在調用read()方法之后,調用seek()方法并使用0作為參數(shù)。
這會將光標移回文本文件的開頭。查看以下代碼以了解其工作原理:
在輸出中,你將看到文本內容被打印了兩次。
一旦完成文件處理后,關閉文件以便其他應用程序可以訪問顯得非常重要。為此,你需要調用close()方法。
逐行讀取文件
我們也可以逐行讀取文件內容,而不是一次讀取文件的所有內容。為此,我們需要執(zhí)行readlines()方法,該方法可以將文本文件中的每一行作為列表項返回。
在輸出中,你將看到文本文件中的每一行都變?yōu)榱肆斜眄?#xff1a;
在多數(shù)情況下,這會使文本更容易相處。例如,我們現(xiàn)在可以輕松遍歷每一行并打印行中的第一個單詞。
輸出如下所示:
寫入文本文件
要寫入文本文件,只需在打開文件時將打開模式設置為w或w+。前者在寫入模式下打開文件,后者在讀取和寫入模式下打開文件。如果該文件不存在,則會創(chuàng)建該文件。值得一提的是,如果你以w或w+模式打開一個文件時,則將移除所有的文件內容,如下所示:
在輸出中,由于使用w+模式打開文件,因此屏幕上不會顯示任何內容,文件的所有內容都已被刪除。你可以附加文字來避免這種情況,我也會在下面提到。
現(xiàn)在,讓我們使用write()方法在文件中寫一些內容。
在上面的腳本中,我們將文本寫入文件,然后調用seek()方法將光標移回開始,然后調用read方法讀取文件的內容。在輸出中,你將看到新添加的內容,如下所示:
通常,你不需要刪除文件的現(xiàn)有內容。相反,你可能需要在文件末尾添加內容。
為此,你需要以a+模式打開文件,該模式能夠添加和讀取文件內容。
再次創(chuàng)建一個包含以下內容的文件,并在D盤根目錄中將其保存為“myfile.txt”:
執(zhí)行以下腳本以使用添加模式打開文件:
在輸出中,你將看到文件的內容。
接下來,讓我們在文件中添加一些文本。
現(xiàn)在我們再次閱讀文件內容:
在輸出中,你將在文末看到新添加的行,如下所示:
最后,在繼續(xù)下一節(jié)之前,讓我們看看在執(zhí)行所需操作后如何使用上下文管理器自動關閉文件。
使用with關鍵字,如上所示,你不需要明確關閉文件。相反,上面的腳本打開文件,讀取內容,然后自動關閉它。
處理PDF文件
除了文本文件,我們還經常需要使用PDF文件來執(zhí)行不同的自然語言處理任務。默認情況下,Python沒有任何可用于讀取或寫入PDF文件的內置庫。但是我們可以使用PyPDF2庫。
在我們使用PyPDF2庫之前,需要安裝它。如果你使用pip安裝程序,則可以使用以下命令安裝PyPDF2庫:
或者,如果你使用的是Anaconda環(huán)境中的Python,則可以在conda命令提示符下執(zhí)行以下命令:
注意:這里需要提到的是PDF文檔可以從不同的來源創(chuàng)建,如word文檔,圖像等。在本文中,我們將只處理使用word文檔創(chuàng)建的PDF文檔。對于使用圖像創(chuàng)建的PDF文檔,還有其他專門的庫,我將在后面的文章中解釋。目前,我們只使用使用word文檔生成的PDF文檔。
作為可以使用的虛擬文檔,你可以從以下鏈接下載PDF:http://www.bavtailor.com/wp-content/uploads/2018/10/Lorem-Ipsum.pdf
將下載的文檔保存在D盤根目錄下。
閱讀PDF文檔
要閱讀PDF文檔,首先,我們必須要像其他普通文件一樣打開它。使用以下腳本:
值得一提的是,在打開PDF文件時,必須將模式設置為“讀取二進制”的rb模式,因為大多數(shù)PDF文件都是二進制格式。
打開文件后,我們需要調用PyPDF2庫中的PdfFileReader()函數(shù),如下所示:
現(xiàn)在使用pdf_document變量,我們可以執(zhí)行各種讀取功能。例如,要獲取PDF文檔中的總頁數(shù),我們可以使用以下numPages屬性:
由于我們只有一頁文檔,在我們的PDF文檔中,你將在結果中看到1。
最后,要從PDF文檔中提取文本,首先需要使用getPage()函數(shù)獲取PDF文檔的頁面。
接下來,你可以調用extractText()函數(shù)從特定頁面中提取文本。
以下腳本從PDF的第一頁中提取文本,然后將其打印在控制臺上。
在結果中,你應該看到PDF第一頁中的文本。
寫入PDF文檔
由于字體和其他約束,無法使用PyPDF2庫直接將Python字符串寫入PDF文檔。但是,為了演示,我們將從PDF文檔中讀取內容,然后將該內容寫入我們將創(chuàng)建的另一個PDF文件。
讓我們首先閱讀PDF文檔第一頁的內容。
上面的腳本讀取了我們PDF文檔的第一頁。現(xiàn)在,我們可以使用以下腳本將第一頁中的內容寫入新的PDF文檔:
上面的腳本創(chuàng)建了一個可用于將內容寫入PDF文件的對象。首先,我們將向這個對象添加一個頁面,并將我們從另一個PDF中檢索到的頁面?zhèn)鬟f給它。
接下來,我們需要打開一個具有wb(寫二進制)權限的新文件。打開具有此類權限的文件會創(chuàng)建一個新文件,如果文件不存在的話。
最后,我們需要在PDF編寫對象上調用write()方法并將新創(chuàng)建的文件傳遞給它。
關閉mypdf和pdf_output_file文件,然后轉到程序的工作目錄。你應該在編輯器中看到一個新文件new_pdf_file.pdf。打開文件,你應該看到它包含來自原始PDF的第一頁的內容。
讓我們嘗試閱讀新創(chuàng)建的PDF文檔的內容:
現(xiàn)在讓我們使用一個更大的PDF文件。從以下鏈接下載PDF文件:
http://ctan.math.utah.edu/ctan/tex-archive/macros/latex/contrib/lipsum/lipsum.pdf
將其保存在本地目錄中。下載文件的名稱為“l(fā)ipsum.pdf”。
執(zhí)行以下腳本查看文件中的頁數(shù):
在輸出中,你將看到打印出87,因為該PDF中有87頁。讓我們在控制臺上打印文檔中的所有頁面:
在輸出中,你將看到打印在屏幕上的PDF文檔的所有頁面。
結論
閱讀和編寫文本文檔是開發(fā)自然語言處理應用程序的基本步驟。在本文中,我們解釋了如何使用Python處理文本和PDF文件。我們看到了如何讀寫文本和PDF文件。在下一篇文章中,我們將開始討論其他一些NLP任務,例如使用spaCy庫進行詞干化,詞形還原化,標記化。
英文原文:https://stackabuse.com/python-for-nlp-working-with-text-and-pdf-files/ 譯者:狼行千里吃雞總結
以上是生活随笔為你收集整理的python读取只读word只读_Python用于NLP :处理文本和PDF文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 仓库处理中 无法修改_阿里云自研数据仓库
- 下一篇: java和c语言的区别_单片机为什么一直