2017-02-17 183 views
-2

目前我的代碼正在提取PDF &中的數據,並對字頻進行計數。我一直在嘗試一段時間,按照頻率的順序排列,但一直未能。我查看了多個類似的答案,但找不到可以開始工作的答案。有人能指出我需要做什麼嗎?我哪裏錯了?

import PyPDF2 
import re 


pdfFileObj = open('ch8.pdf', 'rb') #Open the File 
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) #Read the file 
frequency = {} #Create dict 

print "Number of Pages %s " % pdfReader.numPages #Print Num Pages 

pageObj = pdfReader.getPage(0) # Get the first page 
match_pattern = re.findall(r'\b[a-z]{3,15}\b', pageObj.extractText()) #Find the text 

for word in match_pattern: #Start counting the frequency 
    word = word.lower() 
    count = frequency.get(word,0) 
    frequency[word] = count + 1 


frequency_list = frequency.keys() 

for words in frequency_list: 
    print words, frequency[words] 

在此先感謝。

+1

您是否嘗試過使用'計數器'?你可以在它上面運行一個計數器,然後按'most_common'進行排序。以下是關於它的一些信息:https://docs.python.org/2.7/library/collections.html#collections.Counter.most_common – serk

+0

懶惰的標題(可用於SO!上的每個問題!),懶惰的問題。基本的故障排除:從最簡單的輸入開始,看看你的代碼如何處理。如果您仍然無法弄清楚發生了什麼,請提供您的輸入,輸出,您期望的輸出,您嘗試的內容以及嘗試時發生的情況。 –

回答

0

看看你的Python,從邏輯上看,一切看起來不錯,而且在語法上。我認爲你的提取方法出了問題,因爲我試着用4個單詞的pdf稍微修改一下這些代碼,沒有一個被刮掉。我沒有使用pyPDF2的經驗,所以我不能提供更多的建議,而不是建議如果可能的話,應該嘗試使用不同的提取方法。