Python 檢查 PDF 檔案中是否存在字串
在當今的數字世界中,PDF 檔案已成為儲存和共享資訊的必要媒介。但是,有時在 PDF 文件中查詢特定的文字字串可能很困難,尤其是在檔案很長或很複雜的情況下。這時,流行的程式語言 Python 就派上用場了。
Python 提供了多個庫,允許我們與 PDF 檔案互動並從中提取資訊。一個常見的任務是在 PDF 檔案中搜索特定字串。這對於各種用途都很有用,例如資料分析、文字挖掘或資訊檢索。
在這種情況下,我們有一個問題,即我們想要檢查特定字串是否存在於 PDF 檔案中。為了解決這個問題,我們可以使用兩種不同的方法。
第一種方法涉及直接在 PDF 檔案中搜索字串。這種方法利用一個 PDF 庫,該庫提供搜尋功能來搜尋整個 PDF 檔案中的字串。該庫讀取 PDF 檔案並在檔案內容上執行搜尋操作。這種方法快速有效,因為它不需要迭代 PDF 檔案的每一行。
第二種方法涉及迭代 PDF 檔案的每一行並檢查每一行中是否存在字串。這種方法包括開啟 PDF 檔案,逐行讀取它,並檢查每一行中是否存在字串。與第一種方法相比,這種方法較慢且效率較低,但在某些情況下可能很有用,例如當我們需要對搜尋過程進行更細緻的控制時,例如當我們需要從 PDF 檔案中提取特定資訊時。
總而言之,第一種方法涉及直接在 PDF 檔案中搜索字串,而第二種方法涉及迭代 PDF 檔案的每一行並檢查每一行中是否存在字串。選擇哪種方法取決於手頭任務的具體要求。
既然我們已經充分討論了這些方法,那麼讓我們專注於編寫第一種方法的程式碼。
方法一
# The string we want to search for
St = 'Shruti'
# Open the PDF file in read mode
with open("example.pdf", "r") as f:
# Read the entire file into a string variable 'a'
a = f.read()
# Check if the string 'St' is present in the file contents
if St in a:
# If the string is present, print a message indicating its presence
print('String '', St, '' Is Found In The PDF File')
else:
# If the string is not present, print a message indicating its absence
print('String '', St, '' Not Found')
# Close the file
f.close()
說明
在此程式碼中,我們有一個字串 St,我們想要在 PDF 檔案中搜索它。我們使用 open() 函式以讀取模式開啟 PDF 檔案,並將檔案分配給變數 f。檔名 'example.pdf' 應替換為您要搜尋的檔名。
接下來,我們使用 read() 方法將 PDF 檔案的全部內容讀取到字串變數 a 中。這將建立一個包含 PDF 檔案中所有文字的字串。
然後,我們使用 in 關鍵字檢查字串 St 是否存在於檔案內容中。如果在 PDF 檔案中找到該字串,我們列印一條訊息指示其存在。如果找不到該字串,我們列印一條訊息指示其不存在。
最後,我們使用 close() 方法關閉檔案以釋放與檔案控制代碼關聯的任何系統資源。這是確保我們不會不必要地留下任何開啟的檔案的重要步驟,這可能會導致將來的問題。
總的來說,這段程式碼提供了一種在 PDF 檔案中搜索字串的簡單方法。但是,重要的是要注意,如果 PDF 檔案包含複雜的格式、圖形或影像,則此方法可能無法正常工作,因為這些元素可能未包含在 read() 方法返回的字串中。在這種情況下,可能需要使用專門的 PDF 庫來從 PDF 檔案中提取文字並在提取的文字中搜索字串。
要執行上述程式碼,我們需要執行下面顯示的命令。
命令
python3 main.py
執行上述命令後,我們將在終端中獲得以下輸出。
輸出
("String '", 'Shruti', "' Is Found In The PDF File")
現在讓我們關注第二種方法。
方法二
要檢查 PDF 檔案中是否存在字串,我們可以逐行搜尋。首先,我們開啟檔案並讀取其內容,這些內容儲存在一個名為 f 的變數中。我們將 line 變數和計數器都設定為零以開始逐行迭代檔案。
使用 for 迴圈,我們迭代檔案的每一行並檢查是否存在字串。如果在該行中找到該字串,我們列印一條訊息指示其存在。最後,我們關閉檔案以釋放與檔案控制代碼關聯的任何系統資源。
透過逐行搜尋,我們可以更準確地找到 PDF 檔案中的字串。但是,這種方法可能比一次搜尋整個檔案慢,尤其對於較大的 PDF 檔案而言。此外,重要的是要考慮檔案中的任何格式或其他非文字元素,這可能需要專門的 PDF 庫來處理。
考慮以下程式碼。
示例
# Define the string to search for
St = 'Shruti'
# Open the PDF file in read mode
f = open("example.pdf", "r")
# Initialize counter variables
c = 0
line = 0
# Loop over each line in the file
for a in f:
# Increment the line counter
line = line + 1
# Check if the string is present in the line
if St in a:
# Set the flag variable to indicate the string was found
c = 1
# Exit the loop once the string is found
break
# Check the flag variable to see if the string was found
if c == 0:
# Print a message indicating the string was not found
print('String '', St, '' Not Found')
else:
# Print a message indicating the line number where the string was found
print('String '', St, '' Is Found In Line', line)
# Close the file to release any system resources associated with the file handle
f.close()
說明
此程式碼在名為 example.pdf 的 PDF 檔案中搜索字串“Shruti”。該檔案應與 Python 指令碼位於同一目錄中,或者應指定檔案的完整路徑。
我們首先定義要搜尋的字串,並使用 open() 函式以讀取模式開啟 PDF 檔案。檔案物件被賦值給變數 f。
然後,我們初始化兩個變數:c 是一個設定為 0 的標誌變數,line 是一個設定為 0 的計數器變數。
接下來,我們使用 for 迴圈迭代檔案中的每一行。對於每一行,我們遞增行計數器。然後,我們使用 in 運算子檢查字串 St 是否存在於該行中。如果存在,我們將 c 標誌變數設定為 1 以指示已找到該字串,並使用 break 語句退出迴圈。
迴圈結束後,我們檢查 c 標誌變數的值。如果它仍然為 0,則在檔案中未找到字串 St,我們列印一條訊息指示這一點。否則,我們使用 print() 函式列印一條訊息,指示找到該字串的行號。
最後,我們使用 close() 方法關閉檔案以釋放與檔案控制代碼關聯的任何系統資源。
這種方法對於在大型 PDF 檔案中搜索字串很有用,因為它允許我們在找到字串後停止搜尋,而不是將整個檔案讀入記憶體。但是,重要的是要注意,如果 PDF 檔案包含複雜的格式、圖形或影像,則此方法可能無法正常工作,因為這些元素可能未包含在迴圈返回的行中。在這種情況下,可能需要使用專門的 PDF 庫來從 PDF 檔案中提取文字並在提取的文字中搜索字串。
要執行上述程式碼,我們需要執行下面顯示的命令。
命令
python3 main.py
執行上述命令後,我們將在終端中獲得以下輸出。
輸出
("String '", 'Shruti', "' Is Found In Line", 3727)
結論
總之,檢查 Python 中 PDF 檔案中是否存在字串可以使用各種方法來完成,具體取決於手頭任務的要求。
在本教程中,我們討論了兩種檢查 PDF 檔案中是否存在字串的方法:直接搜尋整個 PDF 檔案或逐行搜尋。我們還提供了這兩種方法的有效示例,以及詳細的解釋和程式碼註釋。透過理解這些方法,您應該能夠使用 Python 在 PDF 檔案中搜索特定文字,這對於各種應用程式(例如資料探勘、文字提取等)都是寶貴的工具。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP