2017-02-17 134 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的经验,所以我不能提供更多的建议,而不是建议如果可能的话,应该尝试使用不同的提取方法。